Передача переменных среды в JVM, независимо от платформы
Я разрабатываю приложение J2EE, которое работает в JBoss на компьютере под управлением Windows Vista, но приложение будет работать на Linux-машине. Есть ли способ передать значение переменной среды независимым от платформы способом?
Я думаю (но я не уверен), что платформенный способ был бы следующим:
-Denv_var=%MY_ENV_VAR% (Windows)
-Denv_var=$MY_ENV_VAR (Linux)
и оттуда я бы получил доступ к значению (на Java), используя
System.getProperty("MY_ENV_VAR");
- это правильно?
Javadoc для System.getenv(String name)
, похоже, подразумевает, что метод зависит от платформы, но я не понимаю этого. Могу ли я просто полностью пропускать переменную в JVM и использовать getenv()
после использования установки значения для переменной среды с помощью ОС?
Ответы
Ответ 1
System.getenv() является независимой от платформы. Используя приведенный выше пример, вы, безусловно, можете написать
String value = System.getenv("MY_ENV_VAR")
и он будет работать как на Linux, так и на Windows. Нет причин поместить это в свойство системы Java. Тем не менее, "зависимая от платформы" часть getenv()
заключается в том, что разные операционные системы используют разные переменные среды, такие как PATH на Windows vs path в Linux. Но пока вы используете свои собственные переменные и называете их последовательно (всегда, например, в верхнем регистре), все будет в порядке.
Ответ 2
Как я интерпретирую учебник java по этому вопросу, так это то, что getenv работает независимо от платформы, но что вы должны иметь в виду, что переменные не называются последовательно на разных платформах. Поскольку вы, кажется, устанавливаете var самостоятельно, это не относится к вам.
Ответ 3
Да - getEnv() просто вернет имя переменной окружения, и вы можете установить его любым способом, подходящим для платформы, на которой вы работаете (обычно через пакетный файл запуска на Win32). Хорошая практика - отказаться от разумных значений по умолчанию на основе платформы (путем проверки System.getProperty("os.name")
), если это возможно, вы хотите избежать того, чтобы ваши пользователи беспокоились о том, что вам нужно будет взаимодействовать с переменными окружающей среды для запуска вашего программного обеспечения.