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."
Antworten:
Wir haben den Windows-Hotfix http://support.microsoft.com/kb/2754804 getestet und bestätigt, dass das Problem dadurch behoben wurde.
quelle
Das Problem wird durch den statusbehafteten FTP-Filter der Firewall verursacht. Um dieses Problem
netsh advfirewall set global StatefulFTP disable
zu umgehen, können Sie es deaktivieren, indem Sie es mit Administratorrechten ausführen .quelle
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.
quelle
Eine weitere Problemumgehung besteht darin, die JVM zu starten mit:
-Djava.net.preferIPv4Stack=true
quelle
System.setProperty("java.net.preferIPv4Stack", "true");
Jeder Browser außer Firefox (16.0.2) funktioniert dann.Dieses Problem kann ohne JDK7 demonstriert werden. Es ist die Firewall in Windows 7, die das FTP-Protokoll blockiert, wenn die Anwendung IPv6-zugeordnete IPv4-Adressen verwendet. Weitere Informationen und Problemumgehungen finden Sie unter http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696 .
quelle
Über das Problem hier gebloggt: http://podzemski.com/2011/09/12/java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/
Vielleicht wird es ein zusätzliches Bewusstsein für das Problem verursachen.
quelle
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.
quelle
Der gleiche Fehler wurde hier mit einem Testfall gemeldet: Java 7 Socket Exception Bug Forum. Es ist ein Problem mit Java 7
quelle
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:
quelle