Мне нужно вызвать внешнюю программу с Java, например ImageMagick's convert
. Он не работает в Windows, если я не поставил cmd /c
перед фактической командой.Межплатформенный способ запуска внешнего процесса из java?
String source = "test.jpg";
String result = "test-thumbnail.jpg";
ProcessBuilder builder = new ProcessBuilder().command("cmd", "/c", "convert", source, "-thumbnail", "295x", result);
Process process = builder.start();
Как избежать использования cmd /c
так, что мой код работает на ОСАХ, отличный Windows?
Без cmd /c
я попадаю в очень похожую проблему, как описано здесь: running imagemagick convert (console application) from python - что существует родную Windows, convert.exe
который вызывается вместо ImageMagick-х convert.exe
. Кажется, что PATH
не выбрано окружением дочернего процесса.
Я дважды проверил, что моя система PATH
имеет каталог ImageMagick до C:\Windows\system32
. Также сама команда отлично работает, когда я ввожу ее в командную строку Windows.
Просто для целей отладки, попробуйте в C: \ Windows \ System32 и переименовать 'convert.exe' как' msconvert.exe' –