java - 是否可以在 Java 中设置单独进程所需的环境变量?

标签 java linux

<分区>

我有一个流程,我想从 Java 开始。问题是由于远程桌面客户端和我要启动的进程不匹配,我需要修改环境变量。我不会在生产中使用它,而只会用于运行测试。我也会这样做,直到这个错误在我使用的工具中得到修复。

我没有 root 访问权限,我使用的是 Linux RHEL7。有人知道如何从 Java 设置这个环境变量吗?我还应该补充一点,我是从 IDE 运行它的。

由于缺乏实际示例,以下答案不是很有帮助: Is it possible to set an environment variable at runtime from Java?

以下示例无法在我需要设置的范围内设置变量:Java - set environment variable

我试过了,

Process p = Runtime.getRuntime().exec("setenv " + name + " " + value);

但是得到如下错误信息,

java.io.IOException: Cannot run program "setenv": error=2, No such file or directory

编辑: 有人推荐了这篇文章,

How do I set environment variables from Java?

不幸的是,我在那里找不到任何解决方案。我要启动的进程已经有一个 Java API,它在我的环境中不起作用。我想要的是等同于 linux 命令,

setenv NAME VALUE

对于运行java的进程。

最佳答案

使用ProcessBuilder:

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");
 Process p = pb.start();

关于java - 是否可以在 Java 中设置单独进程所需的环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075770/

相关文章:

java - 导出 jar (eclipse),同时保留外部 lib 和源文件

php - 在什么情况下可以在浏览器中查看 PHP 文件的源代码?

linux - 从控制台计算特定类型文件的数量

windows - 压缩/压缩文件感知增量上传(跨平台)

linux - Sublime - 仅将选择范围扩展到匹配项

linux - 如何在 Bash 中使用 netcat 自动发送和接收 TCP 流量?

java - 线程会降低 PC 速度并导致 java.lang.OutOfMemoryError

未处理异常的 Java 问题(带有 lambda 的函数接口(interface))

java - libGDX:Android 设备上的 FPS 较低

java - mysql jdbc连接没有错误但在网页上不起作用