Java 使用ProcessBuilder运行ImageMagick命令

Java 使用ProcessBuilder运行ImageMagick命令,java,imagemagick,processbuilder,Java,Imagemagick,Processbuilder,我正在尝试从Java类运行一个简单的ImageMagick命令,由于我只需要运行几个命令,所以我认为可以直接使用ProcessBuilder.start(),而不是使用Im4Java。 我正在使用以下代码- ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png"); pb.directory(new File("/user/gaurav_kl")); pb.start()

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

ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png");
          pb.directory(new File("/user/gaurav_kl"));
         pb.start();
但是我得到了错误 IOException-无法运行程序“convert”(在目录“/user/gaurav_kl”中):错误=2,没有这样的文件或目录 原因可能是什么。
当我从终端运行相同的命令时,它在任何目录下都可以正常工作,因为IM已添加到类路径中。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();

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();

imagemagic大约有100名追随者,processbuilder大约有0名追随者,你正在关注这个问题imagemagic大约有100名追随者,processbuilder大约有0名追随者,你正在关注这个问题谢谢!拖了好几天才找到你的解决方案谢谢!拖了好几天才找到你的解决办法