有没有办法让Java程序在Windows和/或Linux系统中设置环境变量?
我正在为桌面系统创建一个Java应用程序,我希望它可以在Windows,Linux和Mac中使用。但我不确定是否可以让安装程序为应用程序设置环境变量。
答案 0 :(得分:3)
环境只会从传递到子进程,而不会从子进程传递出去。所以如果你想要的是能够写出这样的东西:
java ProgramThatSetsAnEnvironmentVariable
java ProgramThatUsesTheEnvironmentVariable
然后不,那是不可能的。
但是,如果您想要Java程序运行程序,并且希望它传递其他环境变量,那么是的,可以使用java.lang.ProcessBuilder
's environment()
method。
答案 1 :(得分:0)
这可以通过反射来实现。
使用以下代码:
public static void setEnv(String key, String value) {
try {
Map<String, String> env = System.getenv();
Class<?> cl = env.getClass();
Field field = cl.getDeclaredField("m");
field.setAccessible(true);
Map<String, String> writableEnv = (Map<String, String>) field.get(env);
writableEnv.put(key, value);
} catch (Exception e) {
throw new IllegalStateException("Failed to set environment variable", e);
}
}