如何在Java中添加环境变量? [复制]

2024-04-14

可能的重复:
如何从 Java 设置环境变量? https://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java

我正在研究 Java。我必须在 java 代码编程中添加一个环境变量,以便当我使用进程生成器获取列表时它可用,如下所示:

import java.util.Map;
import java.util.Set;

class helloworld  {
    public static void main(String[] args) {

        ProcessBuilder pb = new ProcessBuilder("export MY_ENV_VAR=1");

        Map<String, String> envMap = pb.environment();

        Set<String> keys = envMap.keySet();
        for(String key:keys){
            System.out.println(key+" ==> "+envMap.get(key));
        }

    }
}

但通过上述试验,我无法正确获取环境变量。 那么如何设置环境变量呢?


 Map<String, String> env = pb.environment();
 env.put("MV_ENV_VAR", "1");

将设置 MY_ENV_VAR=1。在调用流程之前

Process p = pb.start();

export只能由 shell 解释。

也可以看看流程构建器 http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

一个完整的例子:

public static void main(String[] args) throws IOException {

    ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "SET");
    Map<String, String> env = pb.environment();
    env.put("MYVAR", "myValue");
    Process p = pb.start();
    InputStreamReader isr = new InputStreamReader(p.getInputStream());
    char[] buf = new char[1024];
    while (!isr.ready()) {
        ;
    }
    while (isr.read(buf) != -1) {
        System.out.println(buf);
    }
}

打印其他环境值:

MYVAR=myValue

这应该证明创建的进程使用了​​受操纵的环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java中添加环境变量? [复制] 的相关文章

随机推荐