В чем разница между JDK_JAVA_OPTIONS и JAVA_TOOL_OPTIONS при использовании Java 11?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 В чем разница между JDK_JAVA_OPTIONS и JAVA_TOOL_OPTIONS при использовании Java 11?

Сообщение Anonymous »

В чем точная разница между JDK_JAVA_OPTIONS и JAVA_TOOL_OPTIONS при использовании Java 11?
Я использую небольшую тестовую программу:

Код: Выделить всё

public class Foo {
public static final void main(String[] args) {
System.out.println("arg: " + System.getProperty("arg"));
}
}
Две переменные среды, похоже, действуют одинаково, но выходные данные немного отличаются. Это заставляет меня думать, что у них могут быть разные варианты использования:

Код: Выделить всё

$ JDK_JAVA_OPTIONS="-Darg=jdk" java Foo
NOTE: Picked up JDK_JAVA_OPTIONS: -Darg
arg: jdk

$ JAVA_TOOL_OPTIONS="-Darg=tool" java Foo
Picked up JAVA_TOOL_OPTIONS: -Darg
arg: tool

$ JDK_JAVA_OPTIONS="illegalArg" java Foo
NOTE: Picked up JDK_JAVA_OPTIONS: illegalArg
Error: Cannot specify main class in environment variable JDK_JAVA_OPTIONS

$ JAVA_TOOL_OPTIONS="illegalArg" java Foo
Picked up JAVA_TOOL_OPTIONS: illegalArg
Unrecognized option: illegalArg
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Похоже, что JDK_JAVA_OPTIONS имеет приоритет над JAVA_TOOL_OPTIONS:

Код: Выделить всё

$ JDK_JAVA_OPTIONS="-Darg=jdk" JAVA_TOOL_OPTIONS="-Darg=tool" java Foo
NOTE: Picked up JDK_JAVA_OPTIONS: -Darg=jdk
Picked up JAVA_TOOL_OPTIONS: -Darg=tool
arg: jdk
Но в конечном итоге командная строка побеждает:

Код: Выделить всё

$ JDK_JAVA_OPTIONS="-Darg=jdk" JAVA_TOOL_OPTIONS="-Darg=tool" java -Darg=cmd Foo
NOTE: Picked up JDK_JAVA_OPTIONS: -Darg=jdk
Picked up JAVA_TOOL_OPTIONS: -Darg=tool
arg: cmd
Однако при сборке считывается только JAVA_TOOL_OPTIONS:

Код: Выделить всё

$ JDK_JAVA_OPTIONS="-Darg=jdk" JAVA_TOOL_OPTIONS="-Darg=tool" javac Foo.java
Picked up JAVA_TOOL_OPTIONS: -Darg=tool
Сейчас я использую AdoptOpenJDK 11, сборка 28.

Подробнее здесь: https://stackoverflow.com/questions/529 ... when-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»