我解决了之前在 stackoverflow 上发布的问题。因此,我的Java应用程序修改了系统环境,例如:
Map<String, String> env = System.getenv();
...
...
map.put("SOME_VAR_ENV", "SOME_KEY_VAR");*
这看起来效果很好,因为后面的一些句子:
System.out.println(System.getenv("SOME_VAR_ENV"));*
打印SOME_KEY_VAR
。
而且,这是我的问题。在下一句话中,我的 Java 应用程序将控制权交给了其他 Java 应用程序。我的 Java 应用程序。调用一个外部 Java 类,据我所知,它必须创建一个新的子进程来运行。但是,新进程尚未保留新的环境变量(SOME_VAR_ENV)。
我不知道发生了什么。为什么第二个应用程序没有保存环境?欢迎任何想法或帮助:)
谢谢!
最佳答案
使用ProcessBuilder
用于启动子进程的 API,它允许您设置环境变量:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();
Java 中没有跨平台的方式来设置调用上下文的环境变量。
关于java - 在Java中保存环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351858/