为 ProcessBuilder 设置环境
我有一个奇怪的问题从Java设置Linux环境(1.6);特别是“PATH”变量。
简而言之,我有一个用于运行本机进程的管道,它使用.用户可以选择通过命名的设置环境变量:java.lang.ProcessBuilder
HashMap
environment
ProcessBuilder pb = new ProcessBuilder(args);
Map<String, String> env = pb.environment();
if (environment != null)
env.putAll(environment);
Process process = pb.start();
如果我将变量转储到控制台,则该变量将正确设置,并为 PATH 变量提供正确的值。但是,运行该进程会导致抛出:env
Exception
java.io.IOException: error=2, No such file or directory
在终端 shell 中使用相同的环境变量时,相同的过程运行良好。为了测试这一点,我在终端中设置环境后运行了Eclipse。在这种情况下,进程将正常运行。ProcessBuilder
因此,必须发生的是,使用的不是我为其设置的环境,而是当前的系统环境。ProcessBuilder
我无法在网上找到这个问题的任何令人满意的答案。也许这是一个特定于操作系统的问题?还是我错过了别的东西?