java - 在Java中保存环境变量

标签 java environment-variables

我解决了之前在 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/

相关文章:

java - 由于 ArrayList 到 Adapter 绑定(bind)问题,notifyDataSetChanged() 无法正确更新

xml - 如何从 Perl 脚本定义 Makefile 变量?

environment-variables - Capistrano:我可以为整个 cap session 设置一个环境变量吗?

file-upload - 是否可以将环境变量 "GOOGLE_APPLICATION_CREDENTIALS"设置为 Flowground 中上传的 JWT 文件?

java - JAXB 注释和父类(super class)

java - 两个带有颜色的 xml

ubuntu - 在 Ubuntu docker 容器中设置 PATH 变量的正确方法

python - 为什么python中设置的环境变量不能持久化?

java - 内存泄漏 - 调试器和内存分析器不同意

java - 我如何在 Java 中使用 JSONata?