ImageMagick转换退出状态133

Dan*_*bbs 5 java permissions imagemagick

我正在使用ImageMagick的转换工具来转换我在Mac OS X上运行的Java程序中的图像.我正在使用以下代码,我从这里改编.

public static void convertToJPG(String originalFile, String newFile) throws Exception {
    executeCommand("/usr/local/ImageMagick-6.6.7/bin/convert", originalFile, newFile);
}

private static void executeCommand(String... command) throws Exception {
    ProcessBuilder pb = new ProcessBuilder(command);
    pb.redirectErrorStream(true);
    Process p = pb.start();
    int exitStatus = p.waitFor();
    System.out.println(exitStatus);
    if(exitStatus != 0)
        throw new Exception("Error converting image.");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我得到退出状态133和下面的错误消息.我假设这与权限有关,因为当我从终端运行相同的命令时,它工作正常.

错误信息:

dyld: Library not loaded: /ImageMagick-6.6.7/lib/libMagickCore.4.dylib
  Referenced from: /usr/local/ImageMagick-6.6.7/bin/convert
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

编辑:好的,所以事实证明我得到了上述错误消息,因为Java无法看到DYLD_LIBRARY_PATH环境变量.所以我重新启动了Eclipse,一切正常.

lak*_*com 3

虽然我无法找到有关 133 返回代码的任何信息,但我确实注意到您没有读取命令标准输出/标准错误流。我建议您阅读该文章,看看 ImageMagick 是否为您提供了一些更有用的输出。这里有一个问题涉及 Runtime.exec() 方法的更复杂的用例,但最好的基本方法是使用此方法