我从Java(1.6)设置Linux环境有一个奇怪的问题; 特别是"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();
Run Code Online (Sandbox Code Playgroud)
该env变量被设置正确,如果我把它转储到控制台,与PATH变量正确的值.但是,运行该进程会导致抛出Exception:
java.io.IOException: error=2, No such file or directory
在终端shell中使用相同的环境变量运行相同的进程.为了测试这个,我在终端后设置环境后运行Eclipse.在这种情况下,该ProcessBuilder过程正确运行.
所以必须发生的是,ProcessBuilder我没有使用我为它设置的环境,而是使用当前的系统环境.
我在网上找不到任何满意的答案.也许这是特定于操作系统的问题?还是别的我错过了什么?