【发布时间】:2015-06-03 22:05:25
【问题描述】:
我需要从 Java 调用外部程序,例如 ImageMagick 的 convert。它无法在 Windows 上运行,除非我将 cmd /c 放在实际命令之前。
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