Java应用程序不使用正确的PATH环境变量

时间:2016-03-07 20:03:58

标签: java path environment-variables environment processbuilder

我一直在努力找到我的Java应用程序不使用默认PATH环境变量的原因。我需要它用ProcessBuilder启动另一个程序。现在我得到“Cannot run program "..." error=2, No such file or directory”,虽然我可以从终端运行这个程序。我正在使用JDK 1.8,Netbeans 8.1,OS X。

以下是System.out.println(System.getenv("PATH"));的输出: /usr/bin:/bin:/usr/sbin:/sbin

终端中PATH的实际值(使用echo $PATH)要长得多,并且包含所需可执行文件的路径。

我发现了一些关于同一主题的问题,但没有人可以帮我解决这个问题。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

PATH是由您正在运行的任何shell创建的,但ProcessBuilder不会在shell中运行,因此没有要附加的PATH来解析您的程序名称。您可以为ProcessBuilder提供一个环境,但不要相信它会让您找到PATH中的程序。在我的一个项目中,我必须提供一个完全合格的道路。]

[注意:里程可能会有所不同,我似乎记得在Windows和* nix之间以及不同的* xix之间有不同的结果。]