如何在JRE上禁用IPv4 IP堆栈的IPv6堆栈?

时间:2012-08-07 16:56:17

标签: java jvm ipv6 jvm-arguments

正如您在下面的屏幕截图中看到的那样,eclipse和Android SDK Manager(以及其他Java程序)正在尝试通过IPv6 TCP / IP堆栈连接到IPv4 Internet IP,而Proxifier(代理管理器程序,无所不能)无法支持这一点。

Eclipse failure in connecting to the Internet Android SDK Manager failure in connecting to the Internet

如何在Java中禁用IPv6?

3 个答案:

答案 0 :(得分:84)

我想将这个用于我无法控制运行该Java应用程序的程序,因此以此_JAVA_OPTIONS=-Djava.net.preferIPv4Stack=true环境变量结束。 (阅读_JAVA_OPTIONS here

如果您使用的是Windows,只需在Windows cmd上运行此命令:
setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true

感谢Jason Nichols提醒这个JVM论点:)

答案 1 :(得分:40)

您是否尝试过(从命令行)

-Djava.net.preferIPv4Stack=true

或(来自您的代码)

System.setProperty("java.net.preferIPv4Stack" , "true");

答案 2 :(得分:3)

也许有点晚了,但对我来说,两种解决方案都没有效果。所以我在here中列出了这个选项:

-Djava.net.preferIPv4Addresses=true

但是以下我在文件末尾添加了一行/etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1

并且

sudo sysctl -p

正如here所解释的那样。为了检查ipv6是否被禁用,只需执行:

ip a | grep inet