使用phantomJs在Java將undefinitely塊的簡單的例子:phantomjs在Java中受阻process.waitFor(
public void runPhantomJs(String path, String command) {
Process process;
String outFile = "a11.txt";
try {
process = Runtime.getRuntime().exec(path+ " " + command + " > " +outFile);
int exitStatus = process.waitFor();
//String status = (exitStatus == 0 ? "SUCCESS:" : "ERROR:");
File f = new File(outFile);
if (f.exists()) {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f),"UTF-8"));
String str;
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
腳本執行很簡單,但它在控制檯上返回一整頁:
var webPage = require('webpage');
var page = webPage.create();
page.open('http://www.google.com/', function(status) {
if (status !== 'success') {
console.log('1');
phantom.exit();
} else {
console.log(page.content);
phantom.exit();
}
});
請注意,在粘貼的代碼中,我添加了一個「> a11.txt」來查看它是否更好地讀取文件而不是直接讀取輸出。它應該更快,但由於某種原因,它不起作用。我想重定向>不起作用。
也許它正在等待你消耗輸入/輸出流..即使沒有? – gerrytan
未達到waitFor()後的斷點。等待,直到過程結束,所以它應該工作。如果我使用一個更簡單的腳本(console.log('success!'));它可以工作 – maugch
嘗試在單獨的線程中消耗流,而主線程阻塞 – gerrytan