Han*_*nsA 76 windows ftp windows-firewall wfp java-7
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
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
后续行动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日): 终于成功了!微软已公开发布了一个修补程序.他们暗示该修复程序将在未来包含在一般软件更新中:
"如果您没有受到此问题的严重影响,我们建议您等待包含此修补程序的下一个软件更新."
小智 88
问题是由防火墙的状态FTP过滤器引起的.作为解决方法,您可以通过执行netsh advfirewall set global StatefulFTP disable管理员权限来禁用它.
Han*_*nsA 15
我已经向Oracle提交了一个错误报告,请参阅bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696
他们将优先级标记为低,这让我觉得他们不太了解问题的严重程度,即FTP在Java/Windows上被破坏了.我忘了在bug报告中明确说明.如果其他人觉得它应该具有更高的优先级,请在Oracle错误报告中添加注释.
我刚刚注意到你也可以对这个错误进行"投票",所以如果你同意这个错误,请给它投票.
pru*_*nge 15
另一种解决方法是使用以下命令启动JVM:
-Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)
小智 5
没有JDK7就可以证明这个问题,当应用程序使用IPv6映射的IPv4地址时,Windows 7中的防火墙会阻止ftp协议.有关更多详细信息和解决方法,请参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696.
| 归档时间: |
|
| 查看次数: |
49303 次 |
| 最近记录: |