我正在尝试从 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/