我尝试从 Runtime.exec(command)
切换到 ProcessBuilder
以从 Java 程序执行 ImageMagick 的 convert
。 convert 的选项是作为字符串从用户传入的,因此我无法轻松地将参数分开以将它们单独传递给 ProcessBuilder
的构造函数。在 (Unix) 命令行上运行的实际命令是
convert -colorspace gray -enhance -density 300 in.pdf out.pdf
我怎样才能让它工作:
public class Demo {
public static void main(String[] args) throws IOException, InterruptedException {
String convertOptions = "-colorspace gray -enhance -density 300"; // arguments passed in at runtime
ProcessBuilder bp = new ProcessBuilder(new String []{"convert",convertOptions,"in.pdf","out.pdf"});
Process process = bp.start();
process.waitFor();
}
}
目前,代码刚刚运行
最佳答案
老问题,但因为我面临着类似的情况...
如果您不想将命令字符串拆分为一个数组,您可以使用 bash -c
执行整个字符串:
String convert= "convert -colorspace gray -enhance -density 300";
String[] cmd= new String[] {"bash", "-c", convert};
ProcessBuilder builder = new ProcessBuilder(cmd);
...
这当然假设 bash
可用。
关于java - 使用带有参数列表的 ProcessBuilder 作为单个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35242294/