Как заставить Java использовать IPv4 вместо IPv6?

39

Мой плагин для браузера Java больше не работает. Когда я открываю страницу с элементом Java, Java не может подключиться к серверу.

После расследования я обнаружил, что Java пытается использовать IPv6, а моя сеть не поддерживает IPv6, поэтому Java всегда не может подключиться.

Я попытался поискать в Google и обнаружил, что должен запускать Java -Djava.net.preferIPv4Stack=true, но как я могу передать это в браузер?

Я использую Google Chrome и Java 7 обновление 5.

nyongrand
источник
Почему бы вам не отключить протокол IPv6, чтобы у Java не было этой опции.
harrymc
Это старая история, я не знаю, отключил ли я протокол IPv6, кажется, я забыл, что я помню, я
удаляю
1
Отключить легко: посмотрите это .
Harrymc
@harrymc всегда копирует контент: эта ссылка мертва.
Джавадба
@javadba: ссылки никогда не бывают мертвыми: посмотрите Wayback Machine , но она устарела. Лучше гугл "Отключить IPv6 в Windows" для полумиллиона результатов.
harrymc

Ответы:

66

Поместите параметры в _JAVA_OPTIONSпеременную окружения. Как это сделать, уже описано в различных других постах - хотя они обычно говорят о настройке PATH, но это все то же самое.

Например, в Linux введите следующее в ваш ~/.profileили ~/.bash_profile:

export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
grawity
источник
1
Хорошо, спасибо за ваш ответ, хотя я использую Windows, но ваше решение вдохновляет меня, спасибо
nyongrand
1
См., Например, этот пост для установки переменных среды: superuser.com/questions/284342/…
user2428118
1
Почему Java «предпочитает» IPV6? Кажется, нарушить работающий код.
Рибо
Как установить это в Windows?
Аднан Али
1
@Ribo: по умолчанию в Java по возможности используется IPv6 с двумя стеками, то есть используются сокеты IPv6, которые также поддерживают адреса IPv4. Эти сокеты по-прежнему совместимы с приложениями IPv4 благодаря использованию адресов, сопоставленных с IPv4. Следовательно, это поведение обратно совместимо.
Доктор Кутейр Аттуши