Как я могу получить значение переменной System в Java?

Как я могу получить значение системной переменной, которая присутствует в

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

в Java?

редактировать

Я использовал метод System.getenv().

Это значение печати, если я дам

System.out.println(System.getenv("JAVA_HOME"));

и он показывает null значение, если я пытаюсь сделать то же самое для системной переменной, созданной мной

System.out.println(System.getenv("DBE"));

Ответ 1

Используйте метод System.getenv(String), передавая имя читаемой переменной.

Ответ 2

Чтобы уточнить, системные переменные совпадают с переменными среды. Пользовательские переменные окружения устанавливаются для каждого пользователя и различаются при каждом входе пользователя. Системные переменные среды одинаковы независимо от того, на какой пользователь входит.

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

String javaHome = System.getenv("JAVA_HOME");

Для получения дополнительной информации об переменных среды см. эту страницу wikipedia.

Также убедитесь, что переменная среды, которую вы пытаетесь прочитать, правильно настроена перед вызовом Java, выполнив:

echo %MYENVVAR%

Вы должны увидеть значение переменной окружения. Если нет, вам может потребоваться повторно открыть оболочку (DOS) или выйти из системы и снова войти в систему.

Ответ 3

Есть несколько деталей, представляющих интерес при получении свойств системы/среды.

Во-первых, System.getenv(String) был введен обратно-назад-когда, а затем устарел. Утечка (глупо, IHMO) продолжала полностью в JSE 1.4.

Он получил повторно представленный в JSE 5.

Эти параметры устанавливаются с помощью панели "Переменные среды" в Windows. Изменения в переменных не могут быть подняты до тех пор, пока ваша текущая виртуальная машина не завершится, и экземпляр CMD.exe не будет завершен.

В отличие от свойств среды, Java также обладает свойствами Java-системы, доступными через System.getProperties(). Эти переменные могут быть инициализированы при запуске виртуальной машины с использованием аргументов командной строки серии -Dname=value. Например, значения для свойств maxInMemory и pagingDirectory задаются в следующей команде:

C:\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\temp -jar myApp.jar

Эти свойства могут быть изменены во время выполнения, запрещая ограничения политики безопасности.

Ответ 4

На самом деле переменная может быть установлена или нет, поэтому в Java 8 или выше ее значение, допускающее обнуление, должно быть заключено в Optional объект, который обеспечивает действительно хорошие функции. В следующем примере мы попытаемся получить переменную ENV_VAR1, если она не существует, мы можем сгенерировать специальное исключение, чтобы предупредить об этом:

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomException("ENV_VAR1 is not set in the environment"));

Ответ 5

Google говорит, чтобы проверить getenv():

Возвращает немодифицируемое представление строковой карты текущей системной среды.

Я не уверен, как системные переменные отличаются от переменных среды, однако, если вы могли бы прояснить, я мог бы помочь больше.

Ответ 6

Как уже упоминалось выше, перезапуск eclipse работал у меня для пользовательской переменной среды. После перезапуска Eclipse IDE System.getenv() подбирает мою переменную окружения.

Ответ 7

Вы пытались перезагрузиться с момента установки переменной окружения?

Похоже, что Windows сохраняет переменную окружения в каком-то кеше, а перезагрузка - это один из способов ее обновления. Я не уверен, но может быть другой метод, но если вы не собираетесь слишком часто менять значение переменной, это может быть достаточно хорошим.

Ответ 8

Вы в системе Linux? Если это так, убедитесь, что вы экспортируете свою переменную.

myVar=testvalue; export myVar

Я получаю ноль, если я не использую экспорт, чтобы определить значение глобально.