从Java运行CutyCapt

时间:2013-02-17 08:32:25

标签: java linux screenshot cutycapt

我尝试在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出了什么问题?

1 个答案:

答案 0 :(得分: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;
  }