1

我正在尝试从 Java 类运行一个简单的 ImageMagick 命令,并且由于我只需要运行一些我认为而不是使用 Im4Java 的命令,因此我可以直接使用 ProcessBuilder.start()。我正在使用以下代码-

ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png");
          pb.directory(new File("/user/gaurav_kl"));
         pb.start();

但我收到错误 IOException - Cannot run program "convert" (in directory "/user/gaurav_kl"): error=2, No such file or directory 这可能是什么原因。当我从终端运行相同的命令时,它可以从任何 Dir 正常工作,因为 IM 已添加到类路径

4

1 回答 1

4

ProcessBuilder 在搜索可执行命令时的行为取决于系统/jvm。虽然您可能期望它使用与底层 shell(即 BASH)相同的逻辑,但文档中并不能保证它。

根据您(和其他人)的经验,最好提供完整的命令路径。例如:

String IMGK_PATH="/usr/local/magick/bin";
ProcessBuilder pb = new ProcessBuilder(IMGK_PATH + "/convert","pic2.png","pic52.png");
pb.directory(new File("/user/gaurav_kl"));
pb.start();
于 2012-07-17T22:04:43.597 回答