我一直在努力寻找我的 Java 应用程序不使用默认 PATH 环境变量的原因。我需要它来使用 ProcessBuilder 启动另一个程序。现在我得到“无法运行程序“...”错误=2,没有这样的文件或目录
”,尽管我可以从终端运行该程序。我使用的是 JDK 1.8、Netbeans 8.1、OS X。
这是 System.out.println(System.getenv("PATH"));
的输出:
/usr/bin:/bin:/usr/sbin:/sbin
终端中 PATH 的实际值(使用 echo $PATH
)要长得多,并且包含所需可执行文件的路径。
我发现了一些关于同一主题的问题,但没有一个可以帮助我解决这个问题。
感谢任何帮助!
最佳答案
PATH 是由您正在运行的任何 shell 创建的,但 ProcessBuilder 不在 shell 内运行,因此没有可附加的 PATH 来解析您的程序名称。您可以为 ProcessBuilder 提供一个环境,但不要相信它会让您找到 PATH 中的程序。在我的一个项目中,我必须提供完全合格的路径。]
[注意:里程可能会有所不同,我似乎记得 Windows 和 *nix 之间以及不同的 *xix 之间的结果有些不同。]
关于Java 应用程序未使用正确的 PATH 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852947/