Я использую инструмент преобразования ImageMagick для преобразования изображений из моей Java-программы, работающей на Mac OS X.
Я использую следующий код, который я адаптировал из здесь .
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.");
}
Однако, когда я делаю это, я получаю статус выхода 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
Редактировать: Хорошо, получается, что я получаю сообщение об ошибке выше, потому что Java не может видеть переменную окружения DYLD_LIBRARY_PATH
. Я перезапустил Eclipse, и все заработало.