【问题标题】:ProcessBuilder results in cannot run programmProcessBuilder 导致无法运行程序
【发布时间】:2015-12-08 05:51:28
【问题描述】:

以下命令直接在控制台(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

我做错了什么?

【问题讨论】:

  • 当你发出控制台命令时,你在哪个目录?您可以使用 ~ 运算符以相对方式引用最终目录

标签: java process arguments screenshot processbuilder


【解决方案1】:

改变这个:

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

到这里:

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

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

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2018-03-25
    • 2018-11-03
    • 1970-01-01
    • 2019-01-12
    相关资源
    最近更新 更多