我正在使用Java调用另一个程序,该程序依赖于导出的环境变量才能正常运行:
SOME_VARIABLE=/home/..
export SOME_VARIABLE
我该如何使用Java来设置这个变量,以便我可以在不止一台机器上使用这个程序?本质上,我想能够通过Java模拟上述命令。
使用 java.lang.Runtime.getRuntime().exec(...)
或 java.lang.ProcessBuilder
调用其他程序时,您可以设置环境变量。
使用 ProcessBuilder,您可以执行以下操作:
ProcessBuilder processBuilder = new ProcessBuilder("your command");
processBuilder.environment().put("SOME_VARIABLE", "/home/..");
processBuilder.start();
有了 Runtime,就可以:
Map<String, String> environment = new HashMap<String, String>(System.getenv());
environment.put("SOME_VARIABLE", "/home/..");
String[] envp = new String[environment.size()];
int count = 0;
for (Map.Entry<String, String> entry : environment.entrySet()) {
envp[count++] = entry.getKey() + "=" + entry.getValue();
}
Runtime.getRuntime().exec("your command", envp);
System#setProperty(String property, String value)
,不过我不确定这是否会改变当前 JVM 之外的任何内容,这意味着此环境变量仅对当前 JVM 启动的进程可用。