簡體   English   中英

如果啟用防火牆,Java 7將阻止Windows Vista和7上的FTP傳輸。有任何想法嗎?

[英]Java 7 prevents FTP transfers on Windows Vista and 7 if firewall is on. Any ideas?

Java 7阻止Windows Vista和7上的FTP傳輸。

在FTP中,在傳輸文件之前,必須發送PORT或PASV命令。 一旦發送其中一個命令,Windows防火牆就會關閉發送它的套接字。 只有在防火牆打開且java.exe的例外不存在時才會發生這種情況。 我懷疑這個問題與使用新的Vista IP堆棧的Java 7有關。

有沒有人有任何想法如何解決或解決這個問題? 我們正在分發一個Java FTP庫,所以我們顯然不能自己添加異常。

例外:

java.net.SocketException: Permission denied: recv failed

JRE版本信息:

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)

后續行動1(2011年11月14日): Oracle已經分析了這個問題並發現它似乎是Windows防火牆和/或IPv6堆棧中的一個錯誤。 他們設法使用本機C(即非Java)應用程序復制問題,因此這是該錯誤不在Java中的有力證據。 他們告訴了微軟,所以球現在在球場上。 有關詳細信息,請訪問http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

后續行動2(2012年7月27日):甲骨文的一位(非常有幫助的)聯系人告訴我,這個問題現在已經在微軟升級了。 我們希望盡快看到一些結果。

后續行動3(2012年8月15日):我們在Oracle的聯系人告訴我們,微軟已接受該錯誤並正在確定其優先級。

后續行動4(2012年9月21日):微軟已經制作了一個目前正在由甲骨文測試的補丁。 在發布日期沒有任何消息。

后續行動5(2012年10月11日):終於成功了! 微軟已公開發布了一個修補程序 他們暗示該修復程序將在未來包含在一般軟件更新中:

“如果您沒有受到此問題的嚴重影響,我們建議您等待包含此修補程序的下一個軟件更新。”

問題是由防火牆的狀態FTP過濾器引起的。 作為一種解決方法,您可以通過執行netsh advfirewall set global StatefulFTP disable具有管理員權限的netsh advfirewall set global StatefulFTP disable來禁用它。

我已經向Oracle提交了一個錯誤報告,請參閱bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

他們將優先級標記為低,這讓我覺得他們不太了解問題的嚴重程度,即FTP在Java / Windows上被破壞了。 我忘了在bug報告中明確說明。 如果其他人覺得它應該具有更高的優先級,請在Oracle錯誤報告中添加注釋。

我剛剛注意到你也可以對這個錯誤進行“投票”,所以如果你同意這個錯誤,請給它投票。

另一種解決方法是使用以下命令啟動JVM:

-Djava.net.preferIPv4Stack=true

我們測試了Windows修補程序http://support.microsoft.com/kb/2754804並確認它確實解決了該問題。

沒有JDK7可以證明這個問題,當應用程序使用IPv6映射的IPv4地址時,Windows 7中的防火牆阻止了ftp協議。 有關更多詳細信息和解決方法,請參見http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696

實際上Windows 7下的JDK7下的TFTP也有同樣的問題,MS修補程序確實解決了FTP問題,但仍不適用於TFTP。 似乎Oracle應該向MS報告相同的問題,並獲得另一個修補程序來解決TFTP問題。

有關此問題的博客: http//podzemski.com/2011/09/12/java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/

也許它會引起一些額外的問題意識。

這里報告了一個帶有測試用例的錯誤Java 7 Socket Exception Bug論壇。 它是Java 7的一個問題

我使用IDE Eclipse Neon,JAVA 7和Windows 7 Professional遇到了同樣的問題。 嘗試將PDF文件上傳到FTP服務器。 我通過在CMD中以管理員身份運行以下命令來解決它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM