Java 7 verhindert FTP-Übertragungen unter Windows Vista und 7, wenn die Firewall aktiviert ist. Irgendwelche Ideen?


75

Java 7 verhindert FTP-Übertragungen unter Windows Vista und 7.

In FTP muss vor der Übertragung einer Datei ein PORT- oder ein PASV-Befehl gesendet werden. Sobald einer der Befehle gesendet wird, schließt die Windows-Firewall den Socket, der ihn gesendet hat. Dies geschieht nur, wenn die Firewall aktiviert ist und eine Ausnahme für java.exe fehlt. Ich vermute, dass dieses Problem mit Java 7 zusammenhängt, das den neuen Vista IP-Stack verwendet.

Hat jemand Ideen, wie man dieses Problem beheben oder umgehen kann? Wir verteilen eine Java-FTP-Bibliothek, sodass wir offensichtlich keine Ausnahmen selbst hinzufügen können.

Ausnahme:

java.net.SocketException: Permission denied: recv failed

JRE-Versionsinfo:

java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)

FOLLOW-UP 1 (14. November 2011): Oracle hat das Problem analysiert und festgestellt, dass es sich anscheinend um einen Fehler in der Windows-Firewall und / oder im IPv6-Stack handelt. Sie haben es geschafft, das Problem mit einer nativen C-App (dh einer Nicht-Java-App) zu replizieren. Dies ist ein starker Beweis dafür, dass der Fehler nicht in Java vorliegt. Sie haben Microsoft informiert, so dass der Ball jetzt in ihrem Spielfeld ist. Weitere Informationen finden Sie unter http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

FOLLOW-UP 2 (27. Juli 2012): Ein (sehr hilfreicher) Kontakt bei Oracle hat mir mitgeteilt, dass das Problem jetzt bei Microsoft eskaliert ist. Wir hoffen, bald einige Ergebnisse zu sehen.

FOLLOW-UP 3 (15. August 2012): Unser Kontakt bei Oracle hat uns mitgeteilt, dass Microsoft den Fehler akzeptiert hat und derzeit Prioritäten setzt.

FOLLOW-UP 4 (21. September 2012): Microsoft hat einen Patch erstellt, der derzeit von Oracle getestet wird. Kein Wort zu einem Veröffentlichungsdatum.

FOLLOW-UP 5 (11. Oktober 2012): Endlich Erfolg! Microsoft hat öffentlich einen Hotfix veröffentlicht . Sie implizieren, dass das Update in Zukunft in einem allgemeinen Software-Update enthalten sein wird:

"Wenn Sie von diesem Problem nicht ernsthaft betroffen sind, empfehlen wir Ihnen, auf das nächste Software-Update zu warten, das diesen Hotfix enthält."


3
Sehr ärgerlich, es wirkt sich auch auf die Ant-FTP-Aufgabe aus: java.net.SocketException: Berechtigung verweigert: recv fehlgeschlagen bei org.apache.tools.ant.taskdefs.optional.net.FTP $ FTPDirectoryScanner.forceRemoteSensitivityCheck (FTP.java:695)
Mostowski Zusammenbruch


Antworten:



89

Das Problem wird durch den statusbehafteten FTP-Filter der Firewall verursacht. Um dieses Problem netsh advfirewall set global StatefulFTP disablezu umgehen, können Sie es deaktivieren, indem Sie es mit Administratorrechten ausführen .


2
Und hier dachte ich, dass etwas mit meinem Code nicht stimmt. Dumme Win7 Firewall + Java Interaktionen. +1.
aroth

Bestätigt, dass dies das Problem mit Java 1.7.0_09 und Windows Vista Home Premium (mit SP2) behoben hat.
Warren Sergent

arbeitete für mich und viel schneller als dieser verdammt
Gruber

Netsh Advfirewall Set Global StatefulFTP Deaktivierung hat bei mir funktioniert :)
Yuseferi

15

Ich habe einen Fehlerbericht an Oracle gesendet , siehe bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

Sie haben die Priorität als niedrig markiert, was mich glauben lässt, dass sie das Ausmaß des Problems nicht ganz verstehen, dh dass FTP unter Java / Windows fehlerhaft ist. Ich habe vergessen, dies explizit im Fehlerbericht anzugeben. Wenn jemand anderes der Meinung ist, dass es eine höhere Priorität haben sollte, fügen Sie dem Oracle-Fehlerbericht einen Kommentar hinzu.

Mir ist gerade aufgefallen, dass Sie auch für den Fehler "stimmen" können. Geben Sie ihm also bitte eine Stimme, wenn Sie damit einverstanden sind, dass er von Bedeutung ist.



15

Eine weitere Problemumgehung besteht darin, die JVM zu starten mit:

-Djava.net.preferIPv4Stack=true

3
Ich hatte dieses Problem in einem Applet, also benutze ich: System.setProperty("java.net.preferIPv4Stack", "true");Jeder Browser außer Firefox (16.0.2) funktioniert dann.
Bobndrew



2

Tatsächlich hat TFTP unter JDK7 unter Windows 7 auch das gleiche Problem. Der MS-Hotfix behebt zwar das FTP-Problem, funktioniert jedoch immer noch nicht für TFTP. Anscheinend sollte Oracle das gleiche Problem an MS melden und einen weiteren Hotfix erhalten, um auch das TFTP-Problem zu beheben.



0

Ich hatte das gleiche Problem mit IDE Eclipse Neon, JAVA 7 und Windows 7 Professional. Versuch, eine PDF-Datei auf einen FTP-Server hochzuladen. Ich habe es gelöst, indem ich den folgenden Befehl in CMD als Administrator ausgeführt habe:

C: \ Users \ pc01> netsh advfirewall set global StatefulFTP disable

1
Für den Stapelüberlauf müssen alle Beiträge in englischer Sprache verfasst sein . Ich habe Ihren Beitrag bearbeitet, um dieser Regel zu entsprechen. Es gibt sprachspezifische Stack Overflow-Communitys, die Nicht-Englisch zulassen: Spanisch , Japanisch , Russisch , Portugiesisch .
FelixSFD
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.