从java运行外部进程的跨平台方式?

sty*_*tys 5 java windows exec

我需要从 Java 调用外部程序,例如 ImageMagick 的convert. 除非我把它放在cmd /c实际命令之前,否则它无法在 Windows 上工作。

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();
Run Code Online (Sandbox Code Playgroud)

如何避免使用cmd /c以便我的代码在 Windows 以外的操作系统上运行?

没有cmd /c我遇到与此处描述的非常相似的问题:从 python 运行 imagemagick convert (console application) - 存在一个convert.exe被调用的本机 Windows而不是 ImageMagick 的convert.exe. 似乎PATH不是由子进程的环境选择的。

我已经仔细检查了我的系统PATH之前是否有 ImageMagick 目录C:\Windows\system32。当我在 Windows 命令行中键入命令时,命令本身也运行得非常好。

小智 3

您可以检查操作系统。

private static String OS = System.getProperty("os.name")
Run Code Online (Sandbox Code Playgroud)