可能的重复:
如何从 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(使用前将#替换为@)