如何从Java设置环境变量?

问题:

如何从Java设置环境变量?我看到我可以使用ProcessBuilder进行子进程。我有几个子进程要启动,所以我宁愿修改当前进程的环境,让子进程继承它。
有一个System.getenv(String)来获取单个环境变量。我也可以使用System.getenv()获取一组完整的环境变量的Map。但是在该Map上调用put()会引发UnsupportedOperationException – 显然这意味着环境只能被读取。没有System.setenv()。
那么,有没有办法在当前运行的进程中设置环境变量?如果是这样,怎么样?如果没有,什么是理由? (是因为这是Java,因此我不应该做恶意的非易失性的过时的事情,如触摸我的环境?)如果没有,任何好的建议,管理环境变量,我将需要喂养几个子进程?

回答:

(是因为这是Java,因此我不应该做恶意的不可移植的过时的事情,如触摸我的环境?)

我想你已经打了头钉。
减轻负担的一种可能办法就是考虑一种方法

void setUpEnvironment(ProcessBuilder builder) {
    Map<String, String> env = builder.environment();
    // blah blah
}

并在启动之前传递任何ProcessBuilder
此外,您可能已经知道了这一点,但您可以使用相同的ProcessBuilder启动多个进程。所以如果你的子进程是一样的,你不需要一遍又一遍地做这个设置。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do I set environment variables from Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 46 = 54