Подтвердить что ты не робот

Передача переменных среды в 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() после использования установки значения для переменной среды с помощью ОС?

4b9b3361

Ответ 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")), если это возможно, вы хотите избежать того, чтобы ваши пользователи беспокоились о том, что вам нужно будет взаимодействовать с переменными окружающей среды для запуска вашего программного обеспечения.