Запуск java с переменной env JAVA_OPTS не имеет никакого эффекта - PullRequest
48 голосов
/ 06 января 2010

В сценарии оболочки я установил переменную среды JAVA_OPTS (чтобы включить удаленную отладку и увеличить память), а затем я выполняю файл jar следующим образом:

export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Xms512m -Xmx512m"
java -jar analyse.jar $*

Но, похоже, переменная env JAVA_OPTS не работает, поскольку я не могу подключиться к удаленной отладке и не вижу изменений в памяти для JVM.

В чем может быть проблема?

PS: я не могу использовать эти настройки в команде java -jar analyse.jar $*, потому что я обрабатываю аргументы командной строки в приложении.

Ответы [ 2 ]

83 голосов
/ 23 июля 2012

Вы можете установить _JAVA_OPTIONS вместо JAVA_OPTS. Это должно работать без $_JAVA_OPTIONS.

48 голосов
/ 06 января 2010

Я не знаю ни одной JVM, которая фактически проверяет переменную окружения JAVA_OPTS. Обычно это используется в сценариях, запускающих JVM, и они обычно просто добавляют его в командную строку java.

Ключевым моментом для понимания здесь является то, что аргументы java, которые идут до бита -jar analyse.jar, будут влиять только на JVM, и не будет передаваться вашему программа. Итак, изменив строку java в вашем скрипте на:

java $JAVA_OPTS -jar analyse.jar $*

Должен "просто работать".

...