2

我尝试在 Linux 中使用 CutyCapt 从 Java 截取屏幕截图。但是由于某种原因,当我从 Java 运行命令时,它不会等待 CutyCapt 完成截屏,而是立即返回并且永远不会截屏。

此命令在命令行中有效,但在从 Java 中运行时无效。

xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/cutycapt  --url=http://www.google.com/ --out=/home/screenshots/screenshot1.png  

这是运行该命令的 Java 代码:

Process child = Runtime.getRuntime().exec(command);         
child.waitFor();

编辑:

我试图从命令行获取错误消息,xvfb 返回错误消息:

error: Xvfb failed to start

编辑2:

当我从命令中删除 --server-args 时它起作用了,但是我的服务器 args 有什么问题?

4

1 回答 1

0

您可以使用适用于大多数 Linux 发行版的快门工具更轻松地制作屏幕截图。

我从java执行cutycapt没有问题,我认为你错过了命令必须是像这样的单词数组new String[] { "xvfb-run", "--server-args=\"......\"", .... }

这就是我成功运行它的方式:

linuxOperations.execute("CutyCapt", "--smooth",
            "--url=http://localhost:8080/Heroes/web/card_generator?id=" + id + "&width=" + width + urlAddon,
            "--out=/home/mladen/temp_image.png");

public class LinuxOperations {

  public int execute(String[] cmdopt) {
    Process process = null;
    try {
      process = Runtime.getRuntime().exec(cmdopt, null, new File("/numbeo/images/"));
      return process.waitFor();
    } catch (InterruptedException ex) {
      Logger.getLogger(LinuxOperations.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
      Logger.getLogger(LinuxOperations.class.getName()).log(Level.SEVERE, null, ex);
    }
    return -1;
  }
于 2015-05-29T12:13:38.683 回答