Можно ли установить переменную среды во время выполнения из Java?

Вы можете получить дескриптор java-se базовой карты, за которую jdk держится java.lang.ProcessEnvironment, а затем добавить javax новые данные и удалить все, что j2se захотите.

Это работает на .java java 1.8.0_144. Не могу гарантировать, что core-java он работает с любой другой oraclejdk версией java, но, вероятно, он .java будет похож, если вам действительно .java нужно изменить среду во время environment-variables выполнения.

private static Map getModifiableEnvironment() throws Exception{
    Class pe = Class.forName("java.lang.ProcessEnvironment");
    Method getenv = pe.getDeclaredMethod("getenv");
    getenv.setAccessible(true);
    Object unmodifiableEnvironment = getenv.invoke(null);
    Class map = Class.forName("java.util.Collections$UnmodifiableMap");
    Field m = map.getDeclaredField("m");
    m.setAccessible(true);
    return (Map) m.get(unmodifiableEnvironment);
}

Получив ссылку java-libraries на карту, просто добавьте jre все, что хотите, и теперь oraclejdk вы можете получить это, используя jdk обычный старый вызов System.getenv("").

Я пробовал jdk это, он работает на MAC, но jre не работает в Windows в обеих openjdk версиях java версии 1.8_161

java

environment-variables

2022-11-01T01:36:35+00:00