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

Можем ли мы читать переменные среды ОС на Java?

Моя ОС - Windows7. Я хочу прочитать переменные окружения в моем приложении Java. Я искал Google, и многие люди отвечают, чтобы использовать метод System.getProperty(String name) или System.getenv(String name). Но это не похоже на работу. С помощью метода я могу прочитать некоторое значение переменной, которое определено в JVM.

Если я установлю переменную среды с именем "Config" со значением "некоторая информация о конфигурации", как я могу получить значение в Java?

4b9b3361

Ответ 1

Вы должны использовать System.getenv(), например:

import java.util.Map;

public class EnvMap {
    public static void main (String[] args) {
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}

При запуске из среды IDE вы можете определить дополнительную переменную среды, которая будет передана вашему Java-приложению. Например, в IntelliJ IDEA вы можете добавить переменные среды в поле "Environment variables" конфигурации .

Обратите внимание (как указано в комментарии от @vikingsteve), что JVM, как и любые другие исполняемые файлы Windows, изменения системного уровня для переменных окружения распространяются только на процесс при его перезапуске.

Для получения дополнительной информации см. Раздел Переменные среды" учебника Java.

System.getProperty(String name) предназначен для получения Java свойств системы, которые не являются переменными среды.

Ответ 2

В случае, если кто-то придет сюда и задается вопросом, как получить определенную переменную среды без перебора всех ваших системных переменных, вы можете использовать getenv(String name). Он возвращает "строковое значение переменной или null, если переменная не определена в системной среде".

String myEnv = System.getenv("env_name");