Можно ли установить переменную среды во время выполнения из 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
Можно ли установить переменную среды во время выполнения из Java?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.