我需要从Java调用外部程序,例如ImageMagick的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
有C:\Windows\system32
之前的ImageMagick目录。当我将它输入到Windows命令行时,命令本身也可以很好地运行。
只是为了调试的目的,尝试将C:\ Windows \ System32下并重命名'convert.exe'为'msconvert.exe' –