Java程序设置环境变量

时间:2013-10-25 22:45:11

标签: java environment

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

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

2 个答案:

答案 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);
    }
}