java - 从 JVM 的 getRuntime.exec() 运行时找不到进程

标签 java

我正在尝试从 Eclipse 中运行以下代码:

Process process = Runtime.getRuntime().exec("gs");

但是我得到了异常:

java.io.IOException: Cannot run program "gs": error=2, No such file or directory

从命令提示符 (OS X) 运行 gs 可以在我的 PATH 上的任何目录中正常运行。似乎 eclipse 不知道我的路径环境变量,即使我已经进入运行配置并在环境选项卡上选择了 PATH。

为了调试此问题,我尝试了以下代码:

Process process = Runtime.getRuntime().exec("echo $PATH");
InputStream fromStdout = process.getInputStream();
byte[] byteArray = IOUtils.toByteArray(fromStdout);
System.out.println(new String(byteArray));

输出是 $PATH,嗯。有人可以将我推向正确的方向吗?

最佳答案

您假设 exec() 使用 shell 来执行您的命令(echo $PATH 是一个 shell 命令);为了简单起见,您可以使用 System.getenv() 查看您的 $PATH:

    System.out.println(System.getenv("PATH"));

编辑

通常 Runtime.exec() 更好更灵活的替代方法是 ProcessBuilder类。

关于java - 从 JVM 的 getRuntime.exec() 运行时找不到进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/783473/

相关文章:

java - 单线程与多线程 JMS 生产者

java - 如何防止 Selenium WebElement sendKeys() 方法执行参数替换

java - countTokens() 在用户输入时总是返回 1

java - 错误 : package org. Threeten.bp.format 不存在

java - 如何从私有(private)访问变量返回数据?

Java:并发递增计数器的映射

java - 开销与代码速度(java.io.File 数组与 java.lang.String 数组)

java - 什么是 CONSTANT_MethodHandle、CONSTANT_MethodType 和 CONSTANT_InvokeDynamic?

java - 在android中启动 Activity 时隐藏标题栏中的应用程序启动器图标

java - 我们如何停止后端进程?