【发布时间】:2017-11-02 12:49:58
【问题描述】:
我有一个想从 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运行所在的进程。
【问题讨论】:
-
@randomir 不,这不起作用。或者如果我有时间重写大量代码,实际上流程构建器会起作用。
-
setenv不是 Linux 命令,也不可能。它是 all 系统(不只是 Linux)上的 some shells,尤其是 csh 和 tcsh 中的 shell(内置)命令,但不是其他系统外壳(甚至在 Linux 上)。它也是一个系统调用,但系统调用不是程序或命令。您不识别您的 IDE,但在 Eclipse 中您可以在任何运行配置中设置 envvars,并且您可以为一个程序设置多个运行配置;如果其他 IDE 没有类似的东西,我会感到惊讶,因为这是很常见的事情。