Переменная системной среды Java - PullRequest
7 голосов
/ 13 марта 2012

Есть ли в Java переменная системной среды по умолчанию, которая всегда будет читаться / добавляться при ее установке? CATALINA_OTPS / JAVA_OPTS и т. Д., Кажется, только для TOMCAT / JBOSS и т. Д.

  1. Я не хочу устанавливать его через системные свойства Java (которые передаются через -Dprop1 = value1 -Dprop2 = value2), так как он включает в себя shell / batch-скрипт.
  2. Он должен работать в любой операционной системе, например, файл двойного щелчка в Windows.
  3. Он должен работать в разных JRE (Sun, IBM, OpenJDK и т. Д.).
  4. Это не должно включать дополнительное кодирование.
  5. Он должен работать в большинстве конфигурационных файлов библиотек, например, при настройке log4j. уровень $ {LOG_LEVEL}.

Обновление : добавлены пункты 4 и 5. Удалите ОС из заголовка, чтобы сделать мой вопрос более понятным.

Обновление 2 : После просмотра ответа Восприятия, кажется, что мои пункты 2 и 3 могут быть достигнуты через System.getenv. Как добиться пункта 4 и 5?

Вот пример сценария: Представьте себе, что JAVA_DEFAULT_OPTS - это переменная окружения, которая будет считываться Java, поскольку теперь она стала стандартом. На разработке настольного компьютера я установил JAVA_DEFAULT_OPTS=-DLOG_LEVEL=DEBUG -Xmx384m; На производственном сервере клиенты устанавливают JAVA_DEFAULT_OPTS=-DLOG_LEVEL=INFO -Xmx1024m. Когда я / пользователи дважды щелкают файл jar в Windows, приложение запускается с другим уровнем log4j и максимальным размером кучи памяти.

Ответы [ 2 ]

13 голосов
/ 13 марта 2012

Существует специальная переменная среды с именем _JAVA_OPTIONS , ее значение будет считываться JVM (java.exe).

В Windows:

set _JAVA_OPTIONS=-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd

В Linux:

export _JAVA_OPTIONS='-Xms64m -Xmx128m -Dawt.useSystemAAFontSettings=lcd'

Для Java Web Start это JAVAWS_VM_ARGS . Для javaw.exe (апплет) это _JPI_VM_OPTIONS .

1 голос
/ 13 марта 2012

Java имеет стандартную системную переменную среды ОС, которая всегда устанавливается при запуске JVM:

  • os.name
  • os.arch
  • os.version

Все доступно через 'System.getProperty (propertyName) `

Если вам нужно что-то большее, вы всегда можете использовать Management API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...