有没有办法让 Java 程序在 Windows 和/或 Linux 系统中设置环境变量?
我正在为桌面系统创建一个 Java 应用程序,我希望它可以在 Windows、Linux 和 Mac 中使用。但我不确定是否可以让安装程序为应用程序设置环境变量。
有没有办法让 Java 程序在 Windows 和/或 Linux 系统中设置环境变量?
我正在为桌面系统创建一个 Java 应用程序,我希望它可以在 Windows、Linux 和 Mac 中使用。但我不确定是否可以让安装程序为应用程序设置环境变量。
环境只会传递给子进程,永远不会传出子进程。所以如果你想要的是能够写出这样的东西:
java ProgramThatSetsAnEnvironmentVariable
java ProgramThatUsesTheEnvironmentVariable
那么不,那是不可能的。
但是,如果您想要让 Java 程序运行一个程序,并且您希望它传递额外的环境变量,那么是的,这是可能的,通过使用java.lang.ProcessBuilder
's environment()
method。
这可以通过反射来实现。
使用以下代码:
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);
}
}