6

我在 Windows 7(64 位)机器上使用 Java 已经有一段时间了,从来没有遇到过无法创建网络连接的问题。现在在我工作的公司的系统上,我需要设置“-Djava.net.preferIPv4Stack=true”,否则 java 进程似乎无法创建单个连接。

不利的一面是,如果我不设置“_JAVA_OPTIONS”,我将不得不配置大量服务才能使用此设置。但是,如果我使用它,Java 会将这个愚蠢的“捡起:_JAVA_OPTIONS ...”输出到 stderr(不知道哪个人做出了那个愚蠢的决定)。然而,这使我的 GWT 编译在 IntelliJ 中失败。

我想知道...这是我第一次遇到这些问题,我想它们一定与操作系统的设置有关。可能是什么导致了这些问题(正如我所提到的......我有大约 4 个其他带有 Windows 7 和 64 位 java vms 的系统没有这些问题)。

克里斯

4

3 回答 3

5

好的,所以我们找到了原因。

这个问题似乎出现在包含我们公司使用的特殊版本的远程访问软件的系统上。这似乎已将一些修改后的 dll 插入到 Windows 网络堆栈中(我们被告知是为了自动检测网络连接)。这个 dll 似乎有一些问题,导致所有 IPv6 流量被阻止。它还导致受影响的机器出现常规蓝屏。卸载该软件使系统蓝屏免费,我不再需要 preferIPv4Stack 设置。

于 2013-09-28T18:16:53.477 回答
2

这只是一个理论...

根据 Java 文档,如果 IPv6 在操作系统上可用,则底层本机套接字将是 IPv6 套接字。

如果操作系统没有 IPv6,或者它已正确配置 IPv6,那就是您想要的。但是如果操作系统的 IPv6 不能正常工作,那么我想 Java 会尝试使用 IPv6 建立连接并失败。


但是,如果我使用它,Java 会将这个愚蠢的“拾取:_JAVA_OPTIONS ...”输出到标准错误。

根据this Q&A,没有办法将其关闭:Suppressing the "Picked up _JAVA_OPTIONS" 消息

我建议全局设置 _JAVA_OPTIONS(如果必须),然后为启动 IDE 的环境取消设置。

于 2013-07-15T07:31:34.947 回答
1

只是我的贡献:

禁用网络设备上的所有ipv6为我解决了这个问题。

我希望这有帮助

于 2013-10-30T12:24:11.340 回答