2013-11-28 2 views
5

Я искал много мест, чтобы сделать IPv6 включенным, чтобы иметь двухъядерный компьютер IPv6. Я нашел, что многие ответили, чтобы установить java.net.preferIPv6Addresses = true, который по умолчанию установлен на false., где установить java.net.preferIPv6Addresses = true

Я хочу знать, где именно следует делать эти изменения, то есть в каком файле или мне нужно написать код Java, чтобы вставить это.

ответ

7

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

Способ защиты от «бомбардировки» - это передать параметр JVM в качестве параметра командной строки; например

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

Вы также могли бы код приложения, чтобы ввести настройки, используя

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

но вы должны убедиться, что инъекции происходит достаточно скоро , и это не было бы тривиально.

1 - «Достаточно скоро» означает, что статическая инициализация сетевого кода JVM произошла. Это может быть трудно достигнуть в сложном приложении. Обратите внимание, что в документации Network Properties указано: «Некоторые проверяются только один раз при запуске виртуальной машины, поэтому наилучшим образом установлены с использованием опции -D команды java ...». Обратите внимание, что он НЕ указывает, что эти свойства могут быть установлены только таким образом.


Внушение с помощью переменной среды JAVA_OPTS будет работать только для некоторых приложений. Это зависит от сценария запуска/оболочки приложения. Стандартные java.exe и javaw.exe команды , конечно, не обращать внимание на $JAVA_OPTS

То же самое относится к _JAVA_OPTIONS ..., который является тот, который я не видел раньше.

+0

Я пытался поставить это из командной строки, но ее бросает error- -Djava.net.preferIPv6Stack»не распознается как внутренней или внешней командой, исполняемой программой или пакетным файлом. – user27

+0

Внимательно прочитайте инструкцию вручную для команды 'java' *. Опция '-D' будет работать, если вы используете ее правильно. –

+0

Ручной ввод не работает в моем случае, или может быть, я не в состоянии сделать это правильно, надеюсь, что инъекция работает. thnkx – user27

0

вы должны занести свой путь в окружение перед запуском исполняемого файла java. в Linux

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

Я делаю это в Windows-машине, так что должно быть именем переменной. – user27

+0

перейти к: мой компьютер -> свойства -> предварительные системные настройки -> переменные окружения -> В разделе Системная переменная создайте новый с именем JAVA_OPTS и соответствующим значением -Djava ... –

+0

Это ** _ JAVA_OPTIONS ** не JAVA_OPTS – RealHowTo

Смежные вопросы