Java7阻止 WindowsVista 和7上的 FTP 传输。
在 FTP 中,在传输文件之前必须发送一个 PORT 或 PASV 命令。一旦其中一个命令被发送,Windows 防火墙就会关闭发送命令的套接字。只有当防火墙打开且不存在 java.exe 异常时才会发生这种情况。我怀疑这个问题与 Java7使用新的 Vista IP 协议栈有关。
有人知道怎么解决这个问题吗?我们正在分发一个 JavaFTP 库,所以我们显然不能自己添加异常。
例外:
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日) : 甲骨文已经分析了这个问题,发现这似乎是 Windows 防火墙和/或 IPv6协议栈中的一个 bug。他们设法用一个本地 C (即非 Java)应用程序复制了这个问题,所以这是这个 bug 不在 Java 中的有力证据。他们已经通知了微软,所以现在球在他们的法庭上。更多详细信息可以访问 href = “ http://bugs.sun.com/bugdatabase/view _ bug.do? bug _ id = 7077696”> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696
跟进2(2012年7月27日) : 甲骨文的一位(非常有帮助的)联系人告诉我,这个问题在微软已经升级。我们希望尽快看到结果。
跟进3(2012年8月15日) : 我们在甲骨文的联系人告诉我们,微软已经接受了这个错误,并且正在优先考虑它。
跟进4(2012年9月21日) : 微软发布了一个补丁,目前正在由 Oracle 测试。发布日期没有任何消息。
跟进5(2012年10月11日) : 终于成功了!微软公开发布了 修复程序。他们暗示,修复程序将包括在未来的一般软件更新中:
“如果您没有受到此问题的严重影响,我们建议您等待包含此修复程序的下一次软件更新。”