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

标签 java windows exec

我需要从 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 - 存在被调用的 native Windows convert.exe 而不是 ImageMagick 的 convert.exe。看起来 PATH 不是由子进程的环境选择的。

我仔细检查了我的系统 PATHC:\Windows\system32 之前是否有 ImageMagick 目录。此外,当我在 Windows 命令行中输入命令时,命令本身运行良好。

最佳答案

您可以检查操作系统。

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

关于java - 从java运行外部进程的跨平台方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631610/

相关文章:

java - ScriptEngineManager 特别谨慎的异常处理

java - 添加时间以生成时间表时遇到问题

ruby - 在 Windows 上通过 Bundler 安装 Nokogiri 时出错

c - 为什么这个 execlp() 函数没有执行?

python - 调用python脚本并捕获二进制输出

java - 将用户重定向到他在 Spring MVC 中来自的同一位置

c# - 如何扩展ms-explorer自动处理 "connected files"/sidecar files/xmp属于jpg?

c# - 在 C# 中从设备句柄获取驱动器号

c - 从 stdin 读取 execv 的参数? (C)

java - java中的arraylist对数据进行排序