我已经搜索了许多启用IPv6的地方,以便拥有双栈机器IPv6。 我发现很多人已回答设置java.net.preferIPv6Addresses = true,默认设置为false。
我想知道我应该在哪里进行这些更改,即在哪个文件中或者我必须编写一些Java代码来实现这些更改。
答案 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.exe
和javaw.exe
命令肯定不会关注$JAVA_OPTS
这同样适用于_JAVA_OPTIONS
......这是我以前从未见过的。
答案 1 :(得分:0)
在运行java可执行文件之前,必须放入环境路径。 在linux中
export JAVA_OPTS="-Djava.net.preferIPv4Stack=true" (same for ipv6 )