0

有没有办法让 Java 程序在 Windows 和/或 Linux 系统中设置环境变量?

我正在为桌面系统创建一个 Java 应用程序,我希望它可以在 Windows、Linux 和 Mac 中使用。但我不确定是否可以让安装程序为应用程序设置环境变量。

4

2 回答 2

3

环境只会传递子进程,永远不会传出子进程。所以如果你想要的是能够写出这样的东西:

java ProgramThatSetsAnEnvironmentVariable
java ProgramThatUsesTheEnvironmentVariable

那么不,那是不可能的。

但是,如果您想要让 Java 程序运行一个程序,并且您希望它传递额外的环境变量,那么是的,这是可能的,通过使用java.lang.ProcessBuilder's environment()method

于 2013-10-25T22:50:22.380 回答
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);
    }
}
于 2018-12-05T08:53:45.337 回答