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日): 终于成功了!微软已公开发布了一个修补程序.他们暗示该修复程序将在未来包含在一般软件更新中:
"如果您没有受到此问题的严重影响,我们建议您等待包含此修补程序的下一个软件更新."
我们的一个用户在日志为我们的.NET WinForms应用程序,指示已派出Activated事件发生之前的Load事件.我不认为这是可能的,并且已经编码了Load以前总会发生的假设Activated.
还有其他观察者Activated发生过Load吗?
如果是这样,为什么并且有什么方法可以确保它不会发生?
从来没有调用我提供的用于定义我的指令的函数.它过去工作正常但突然停止工作,我不知道为什么.
这是我的指示:
portalApp.directive('contactPanel', function () {
console.log("NEVER SHOWN!");
return {
restrict: 'AE',
replace: 'true',
templateUrl: 'partials/account/contactPanel.html',
scope: {
contact: '=contact',
primaryRoleName: '@',
roleName: '@',
primary: '=primary',
locations: '=locations'
},
controller: function (userService, $rootScope, $scope) {
...snip...
}
};
});
Run Code Online (Sandbox Code Playgroud)
这里是一个使用示例:
<contact-panel contact="user.account.contacts.billing" role-name="billing"
locations="locations"></contact-panel>
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是正确的大小写,即JS中的camel-case和HTML中的连字符.
关键线索是,第二行中记录的消息(即"从不显示!")从未显示在控制台中.如果我在指令声明之前立即记录消息然后显示,那么解释器正在执行此代码,但框架永远不会使用我的声明.
我很想得到明显的答案,但我也很想听听调试这类问题的一些方法.