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

时间:2015-06-03 22:05:25

标签: 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();

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

如果没有cmd /c,我会遇到与此处描述的非常类似的问题:running imagemagick convert (console application) from python - 存在一个本机Windows convert.exe,而不是ImageMagick的convert.exe。似乎PATH未被子进程的环境挑选。

我已经仔细检查过我的系统PATHC:\Windows\system32之前有ImageMagick目录。当我在Windows命令行中输入命令时,命令本身运行得非常好。

1 个答案:

答案 0 :(得分:1)

您可以查看操作系统。

private static String OS = System.getProperty("os.name")