Как я могу получить значение системной переменной, которая присутствует в
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
в Java?
редактировать
Я использовал System.getenv()
метод.
Это значение печати, если я дам
System.out.println(System.getenv("JAVA_HOME"));
и он показывает null
значение, если я пытаюсь сделать то же самое для системной переменной, созданной мной
System.out.println(System.getenv("DBE"));
Ответы:
Используйте
System.getenv(String)
метод, передавая имя переменной для чтения.источник
Чтобы уточнить, системные переменные такие же, как переменные среды. Переменные среды пользователя устанавливаются для каждого пользователя и различаются при каждом входе в систему другого пользователя. Переменные среды всей системы одинаковы независимо от того, какой пользователь входит в систему.
Чтобы получить доступ к текущему значению общесистемной переменной или пользовательской переменной в Java, см. Ниже:
Для получения дополнительной информации о переменных среды см. Эту страницу википедии .
Также убедитесь, что переменная окружения, которую вы пытаетесь прочитать, правильно установлена, прежде чем вызывать Java, выполнив:
Вы должны увидеть значение переменной среды. Если нет, вам может потребоваться повторно открыть оболочку (DOS) или выйти и снова войти в систему.
источник
getenv
должно быть в маленьком случае вместоgetEnv
права?echo %var%
то печатает%var%
. Если я попытаюсь вместо этого,echo $var
он работает и отображает значение этой переменной env. Мойgetenv
возвращается ноль.%var%
используется для Windows,$var
для систем Unix / Linux / MacOS.Есть несколько деталей, представляющих интерес при получении свойств системы / среды.
Сначала
System.getenv(String)
был введен обратный путь, когда устарел. Устаревание (глупо, IHMO) продолжалось вплоть до JSE 1.4 .Это было повторно введено в JSE 5 .
Они устанавливаются с помощью панели «Переменные среды» в Windows. Изменения в переменных могут не регистрироваться, пока ваша текущая виртуальная машина не будет закрыта, а экземпляр CMD.exe будет закрыт.
В отличие от свойств среды, Java также имеет системные свойства Java, доступные через
System.getProperties()
. Эти переменные могут быть инициализированы при запуске виртуальной машины с использованием аргументов командной строки серии . Например, значения для свойств и задаются в команде ниже:-Dname=value
maxInMemory
pagingDirectory
Эти свойства могут быть изменены во время выполнения, за исключением ограничений политики безопасности.
источник
На самом деле переменная может быть установлена или нет, поэтому в Java 8 или выше ее значение, допускающее обнуляемость, должно быть заключено в
Optional
объект, который обеспечивает действительно хорошие функции. В следующем примере мы попытаемся получить переменнуюENV_VAR1
, если она не существует, мы можем сгенерировать специальное исключение, чтобы предупредить об этом:источник
Google говорит, чтобы проверить getenv () :
Однако я не уверен, насколько системные переменные отличаются от переменных среды, поэтому, если бы вы могли уточнить, я мог бы помочь больше.
источник
Вы пробовали перезагрузить компьютер после установки переменной среды?
Похоже, что Windows хранит свою переменную окружения в каком-то кеше, и перезагрузка - один из способов ее обновления. Я не уверен, но может быть другой метод, но если вы не собираетесь менять значение вашей переменной слишком часто, этого может быть достаточно.
источник
Как уже упоминалось выше, перезапуск eclipse работал для меня, определяемой пользователем переменной среды. После того, как я перезапущу Eclipse IDE,
System.getenv()
происходит сбор переменной среды.источник
Вы в системе Linux? Если это так, убедитесь, что вы экспортируете свою переменную.
Я получаю ноль, если я не использую экспорт, чтобы определить значение глобально.
источник