Я использую Process Builder для запуска команд ImageMagick в Windows. По какой-то причине с Process Builder выходные изображения не генерируются в большинстве случаев. Когда я попробовал ту же команду, используя Runtime.getRuntime().exec
, был сгенерирован вывод. Любая идея, почему это так?Process Builder не работает в Windows
String input="D:\\Koala.jpg";
String output = "D:\\ProcessBuilderOutput\\KoalaPNG.png";
commands.add("D:\\Program Files\\ImageMagick-6.8.6-Q16\\convert");
commands.add("-alpha off");
commands.add("-strip");
commands.add(input);
commands.add("-colorspace CMYK");
commands.add(output);
try{
executeProcessCommand(commands);
if(new File(output).exists() != true){
System.out.println("output not generated");
}
}catch (Exception e) {
e.printStackTrace();
}
public static void executeProcessCommand(List<String> commands) throws Exception {
Process proc = null;
try {
System.out.println("-executeProcessCommand: Trying to execute :- "+commands);
ProcessBuilder processBuilder = new ProcessBuilder(commands);
proc = processBuilder.start();
proc.waitFor();
System.out.println("- executeProcessCommand: Executed the command ");
} catch (Exception e) {
System.out.println(" - executeProcessCommand:" + e.getMessage());
} finally {
try {
if(proc != null)
proc.destroy();
} catch (Exception e) {
System.out.println("executeProcessCommand:"+ e.getMessage());
}
}
}
Не работает последовательно или вообще? Каковы ваши входные файлы? Что означает «не работает»? – chrylis
@chrylis, Когда я попытался 10 раз, вывод генерируется только один раз ... В любом случае я отредактировал вопрос ... –
Прочитайте (и внесите) * все * рекомендации [Когда Runtime.exec() не будет] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html). Это может решить проблему. Если нет, он должен предоставить дополнительную информацию о причине отказа. Затем проигнорируйте, что он ссылается на 'exec' и (продолжает) сборку' Process' с помощью 'ProcessBuilder'. Также разбивайте 'String arg' на' String [] args' для учета аргументов, которые сами содержат пробелы. –