Запуск java с переменной JAVA_OPTS env

В оболочке script я установил переменную среды 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 $*, потому что я обрабатываю аргументы командной строки в приложении.

Ответ 1

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

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

java $JAVA_OPTS -jar analyse.jar $*

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

Ответ 2

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