我正在尝试使用我的Java程序中的PhantomJS运行一个简单的图像捕获脚本。最终目标是自动化截取特定网页的截图。
我的问题是,当我运行以下代码时,程序退出时返回值为-1,并且不会生成任何图像:
Process process = new ProcessBuilder("C:\\PhantomJS\\phantomjs.exe", "imagecap.js", "http://www.google.com", "google.png").start();
process.waitFor();
System.out.println("Program exited with: " + process.exitValue());
但是,当我从windows命令提示符运行等效命令时:
C:\PhantomJS\phantomjs.exe imagecap.js http://www.google.com google.png
运行正常并生成正确的.png文件。
我也尝试让Java通过cmd.exe以管理员身份运行命令,但没有运气:
Process process = Runtime.getRuntime().exec("runas /profile /user:Administrator \"cmd /c start /wait" +
"C:\\PhantomJS\\phantomjs.exe imagecap.js http://www.google.com google.png\"");
上面的代码像第一个例子一样返回1而不是-1,虽然我不知道为什么。
我通过PhantomJS运行的微小Javascript脚本是:
var page = require('webpage').create();
page.viewportSize = { width: 1600, height: 1024 };
var system = require('system');
page.open(system.args[1], function() {
page.render(system.args[2])
phantom.exit();
});
我完全知道脚本有效,我可以手动运行它,它可以完美运行。
我想知道是否有人可以向我解释为什么我尝试使用Java运行此操作失败。