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