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

时间:2009-04-23 20:54:57

标签: java

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

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

但是我得到了例外:

  

java.io.IOException:无法运行   程序“gs”:错误= 2,没有这样的文件或   目录

从命令提示符(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,嗯。有人可以按正确的方向推动我吗?

2 个答案:

答案 0 :(得分:3)

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

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

修改

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

答案 1 :(得分:1)

我有同样的问题,我发现了问题。 Eclipse中的Path变量与命令行中的路径变量的内容不同。

解决方案:

在命令行中查找$ Path变量并复制内容。然后打开Run Configuration-> Environment并选择new。名称:$ PATH值:插入复制的内容。

这解决了问题。