我正在尝试从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,嗯。有人可以按正确的方向推动我吗?
答案 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值:插入复制的内容。
这解决了问题。