ProcessBuilder结果无法运行程序

时间:2015-09-11 15:46:45

标签: java process arguments screenshot processbuilder

以下命令直接在控制台(debian)中工作:

xvfb-run --server-args="-screen 0, 1024x768x24" cutycapt --url='https://www.google.com' --out=/home/admin/screenshot_name_new.png

现在我试图在ProcessBuilder中完成这项工作,我尝试了两件事:

List<String> processArguments = new ArrayList<String>();
processArguments.add("/usr/bin/xvfb-run");
processArguments.add("--server-args=\"-screen 0, 1024x768x24\" /usr/bin/cutycapt");
processArguments.add("--url=https://www.google.com");
processArguments.add("--out=/home/admin/screenshot_name_new.png");
ProcessBuilder pb = new ProcessBuilder(processArguments);
Process p = pb.start();

不工作:/home/admin/screenshot_name_new.png(没有这样的文件或目录)

ProcessBuilder pb = new ProcessBuilder("/usr/bin/xvfb-run --server-args=\"-screen 0, 1024x768x24\" /usr/bin/cutycapt --url='https://www.google.com' --out="/home/admin/screenshot_name_new.png);

结果:

 Cannot run program "\usr\bin\xvfb-run --server-args="-screen
 0,1024x768x24" \usr\bin\cutycapt --url='https://www.google.com'
 --out=/home/admin/screenshot_name_new.png": error=2, No such file or directory

我做错了什么?

1 个答案:

答案 0 :(得分:3)

改变这个:

processArguments.add("--server-args=\"-screen 0, 1024x768x24\" /usr/bin/cutycapt");

到此:

processArguments.add("--server-args=-screen 0, 1024x768x24");
processArguments.add("/usr/bin/cutycapt");

这是两个不同的论点。并且引号仅由shell使用以指示空格是参数的一部分;将参数直接传递给进程时不需要它们。

相关问题