在哪里设置java.net.preferIPv6Addresses = true

时间:2013-11-28 09:45:06

标签: java ipv6

我已经搜索了许多启用IPv6的地方,以便拥有双栈机器IPv6。 我发现很多人已回答设置java.net.preferIPv6Addresses = true,默认设置为false。

我想知道我应该在哪里进行这些更改,即在哪个文件中或者我必须编写一些Java代码来实现这些更改。

2 个答案:

答案 0 :(得分:7)

设置需要进入系统属性......并且需要在Java类库的相关部分初始化之前存在。

“防弹”方法是将设置作为命令行参数传递给JVM; e.g。

    java -Djava.net.preferIPv6Addresses=true ... com.example.MainClass <args>

您还可以使用

对应用程序进行编码以注入设置
    System.setProperty("java.net.preferIPv6Addresses", "true");

但你需要确保注射很快发生 1 ,这不会是微不足道的。

1 - “很快”意味着在JVM网络代码的静态初始化发生之前。这在复杂的应用中很难实现。请注意Network Properties文档说明:“有些只在启动VM时检查一次,因此使用java命令的-D选项最好设置”。请注意,它并未声明这些属性只能以这种方式设置。


使用JAVA_OPTS环境变量的建议仅适用于某些应用程序。这取决于应用程序的启动程序/包装程序脚本的功能。标准java.exejavaw.exe命令肯定不会关注$JAVA_OPTS

这同样适用于_JAVA_OPTIONS ......这是我以前从未见过的。

答案 1 :(得分:0)

在运行java可执行文件之前,必须放入环境路径。 在linux中

export JAVA_OPTS="-Djava.net.preferIPv4Stack=true" (same for ipv6 )