Java 应用程序没有使用正确的 PATH 环境变量
Java application does not use the right PATH environment variable
我一直在努力寻找我的 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
)要长得多并且包含所需可执行文件的路径。
我发现了一些关于同一主题的问题,但 none 可以帮助我解决这个问题。
感谢任何帮助!
PATH 是由 shell 你 运行 创建的,但 ProcessBuilder 不在 shell 内运行,因此没有可附加的 PATH 来解决你的问题程序名称。您可以为 ProcessBuilder 提供一个环境,但不要相信它会让您找到 PATH 中的程序。在我的一个项目中,我必须提供一个完全合格的路径。]
[注意:里程可能会有所不同,我似乎记得 Windows 和 *nix 之间以及不同的 *xix 之间的结果有些不同。]
我一直在努力寻找我的 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
)要长得多并且包含所需可执行文件的路径。
我发现了一些关于同一主题的问题,但 none 可以帮助我解决这个问题。
感谢任何帮助!
PATH 是由 shell 你 运行 创建的,但 ProcessBuilder 不在 shell 内运行,因此没有可附加的 PATH 来解决你的问题程序名称。您可以为 ProcessBuilder 提供一个环境,但不要相信它会让您找到 PATH 中的程序。在我的一个项目中,我必须提供一个完全合格的路径。]
[注意:里程可能会有所不同,我似乎记得 Windows 和 *nix 之间以及不同的 *xix 之间的结果有些不同。]