В чем разница между системным свойством и переменной среды - PullRequest
34 голосов
/ 19 мая 2010

Мне не ясно об этом. Когда я запускаю Java-приложение или запускаю апплет в средстве просмотра апплета (в среде IDE), System.getProperty("java.class.path") дает мне то же самое, что и System.getenv("CLASSPATH"), который является CLASSPATH, определенным в моей переменной env.

Но когда я развертываю свой апплет на веб-сервере и получаю к нему доступ с того же компьютера, что и клиент, я получаю разные результаты для двух. (System.getProperty("java.class.path") указывает только на дом JRE, а System.getenv("CLASSPATH") возвращает ноль).

А вот еще кое-что, что заставляет меня задуматься:

Для части апплета, env var JAVA_HOME, я получаю тот же результат при развертывании апплета в браузере, а также в средстве просмотра апплетов.

И если я сам определю переменную env на системном уровне и использую getenv("envName"), результат будет null. В любом случае я могу определить один и получить его в моей программе Java?

Ответы [ 2 ]

40 голосов
/ 19 мая 2010

Переменные среды зависят от операционной системы. Свойства только для JVM.

24 голосов
/ 24 мая 2013
System.getProperty("Propertname") **Platform Independent** 

Приведенный выше метод возвращает аргументы и свойства JVM.

System.getenv("EnvName")       **Platform Dependent**

Приведенный выше метод возвращает переменные операционной системы environment.

В Linux вы можете установить переменную окружения из оболочки, используя следующие команда.

export SYSTEM_TYPE=PROD

В Java вы можете прочитать переменную с помощью

System.getenv("SYSTEM_TYPE")

Приведенный выше код вернет PROD

http://javarevisited.blogspot.in/2012/08/how-to-get-environment-variables-in.html

...