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

标签 java path environment-variables environment processbuilder

我一直在努力寻找我的 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/

相关文章:

Java lambda 不适用于完整定义

java - 包级别的方法

java - 如何添加一个旋转样式的进程对话框 5 秒

java - 使用服务组件运行时

vim - 为什么我的 vim 命令行路径与我的 shell PATH 不同?

c# - 如何在 C# 中列出 %TEMP% 和 %USERNAME% 目录?

python - Python 人员使用哪个路径模块或类代替 os.path?

apache-spark - 在 Windows 中为 pyspark 设置的环境变量

python - 如何在python和go语言之间共享变量?

visual-studio-2008 - Visual Studio 2008 - 构建事件 : How to use Variable (set tmp ="abc" and %abc%)?