Java 7的防止在Windows Vista和Windows 7 FTP传输。
在FTP,一个文件之前被传输端口或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日):在甲骨文A(非常有用)接触告诉我,这个问题现在已经在微软升级。 我们希望尽快看到一些成果。
随访3(2012年8月15日):我们在甲骨文联系告诉我们,微软已经接受了错误,并在优先它的过程。
的后续4(2012年9月21日):Microsoft已产生当前正在由Oracle测试的贴剂。 在发布日期没有字。
后续5(11 2012年10月):成功了! 微软已经公开发布的修补程序 。 他们暗示,修补程序将包含在未来的通用软件更新:
“如果您不会受到严重影响这个问题,我们建议您等待包含此修复程序的下一个软件更新。”
我们测试了Windows修补程序http://support.microsoft.com/kb/2754804并证实它确实解决问题。
问题是由防火墙的状态FTP过滤器造成的。 作为一种变通方法,您可以通过执行禁用netsh advfirewall set global StatefulFTP disable
具有管理员权限。
我已经提交到Oracle的bug报告,请参阅bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696
他们已经打上优先级为低,这让我觉得他们不太明白问题的严重性,即FTP上的Java / Windows的破坏。 我忘了明确规定,在bug报告。 如果任何人感觉它应该有一个更高的优先级,请添加到Oracle错误报告的注释。
我只注意到你也可以“投票”的错误,所以请给它一票,如果你同意它是显著。
另一个解决办法是启动JVM有:
-Djava.net.preferIPv4Stack=true
这个问题可以在不JDK7证明,这是在Windows 7防火墙阻止应用程序时,使用IPv6映射IPv4地址FTP协议。 见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696更多细节和解决方法。
博客上讲述这里的问题: http://podzemski.com/2011/09/12/java-7-prevents-ftp-transfers-on-windows-when-firewall-is-on/
也许它会导致问题的一些额外的意识。
JDK7下TFTP其实在Windows 7上也有同样的问题,MS修补程序解决FTP问题,但仍然没有为TFTP作品。 看来甲骨文应报告了同样的问题,以MS和获得另一个修复程序来解决问题,TFTP,以及。
同样的错误与测试用例报告如下: Java 7的插座异常错误的论坛。 它与Java的一个问题7
我不得不使用IDE Eclipse的霓虹灯,JAVA 7和Windows 7专业版同样的问题。 试图将PDF文件上传到FTP服务器。 我解决它在CMD以管理员身份运行以下命令:
C: \ Users \ pc01> netsh advfirewall set global StatefulFTP disable
文章来源: Java 7 prevents FTP transfers on Windows Vista and 7 if firewall is on. Any ideas?