如何强制Java使用IPv4代替IPv6?


38

我的Java浏览器插件不再有效。当我打开具有Java元素的页面时,Java无法连接到服务器。

经过调查,我发现Java试图使用IPv6,而我的网络不支持IPv6,因此Java始终无法连接。

我试着在Google上查找并发现我应该运行Java -Djava.net.preferIPv4Stack=true,但是如何将其传递给浏览器?

我使用谷歌浏览器和Java 7更新5。


为什么不禁用IPv6协议,因此Java不会有此选项。
harrymc 2013年

这是一个古老的故事,我不知道我是否已经禁用IPv6协议,似乎有,我已经忘记了,我记得的是我删除Java 7并将其替换为Java 6
nyongrand 2013年

1
禁用很简单:看到这个
harrymc 2013年

@harrymc总是复制内容:那个链接已经死了。
javadba 2017年

@javadba:链接永远不会死:看看Wayback Machine,但它已经过时了。更好的谷歌“在Windows上禁用IPv6”获得了50万个结果。
harrymc

Answers:


65

将选项放在_JAVA_OPTIONS环境变量中。如何做到这一点已经在各种其他帖子中描述 - 虽然他们通常谈论设置PATH,但它们都是一样的。

例如,在Linux上,将以下内容放入您的~/.profile~/.bash_profile

export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

1
好的,谢谢你的回复,虽然我使用Windows但你的解决方案激励我,谢谢
nyongrand

1
例如,请参阅此帖子以设置环境变量:superuser.com/questions/284342
....- user2428118 2013年

1
为什么Java'更喜欢'IPV6?它似乎打破了有效的代码。
Ribo 2016年

如何在Windows中设置它?
Adnan Ali

1
@Ribo:默认情况下,Java尽可能使用双栈IPv6,也就是说,它使用也支持IPv4地址的IPv6套接字。通过使用IPv4映射地址,这些套接字仍与IPv4应用程序兼容。因此,这是向后兼容的行为。
Koutheir Attouchi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.