我正在尝试从Java类运行一个简单的ImageMagick命令,因为我只想运行一些命令而不是使用Im4Java,我可以直接使用ProcessBuilder.start()。 我使用以下代码 -
ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png");
pb.directory(new File("/user/gaurav_kl"));
pb.start();
但是我收到了错误 IOException - 无法运行程序“convert”(在目录“/ user / gaurav_kl”中):error = 2,没有这样的文件或目录 可能是什么原因。 当我从终端运行相同的命令时,它可以从任何目录中正常工作,因为IM已被添加到类路径
答案 0 :(得分:4)
ProcessBuilder在搜索命令可执行文件时的行为取决于system / jvm。虽然您可能期望它使用与底层shell相同的逻辑(即BASH),但documentation中无法保证它。
根据您的经验(和其他人),最好提供完整的命令路径。例如:
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();