2015-01-04 2 views
2

문제점 : Java 프로그램에서 phantomjs 스크립트를 실행해야하지만 할 수 없습니다. 실제로Java 프로그램에서 phantomjs 스크립트 실행

var page = require('webpage').create(); 
page.open('http://stackoverflow.com',function(status){ 
if(status !== 'success'){ 
    console.log('Open failed'); 
}else{ 
    console.log(page.evaluate(function(){ 
     return document.documentElement.outerHTML; 
    })); 
} 
phantom.exit(); 
}); 

, 나는 웹 페이지의 자바 스크립트를 실행하고 HTML 결과를 찍은 후 원하는 : 이 스크립트의 코드입니다. 나는이 링크 Running Phantomjs from javascript, JSP or Java의 코드를 시도했지만 내 프로그램이 줄을 내가이 문제를 해결하기 위해 무엇을 할 수

int exitStatus = process.waitFor(); 

에서 차단?

감사합니다.

+0

유닉스와 유사한 운영 체제에서 실행하고 있습니까?/usr/bin 아래에 PhantomJS와 스크립트를 설치 했습니까? –

+2

phantomjs 스크립트의 출력이 Java의 BufferedReader 버퍼 크기보다 길 수 있습니다. 따라서 출력물을 읽지 않고 버퍼가 가득차 있기 때문에 phantomjs 스크립트가 차단하는 함정에 빠질 수도 있습니다. 자세한 내용은 다음을 확인하십시오 : http://stackoverflow.com/questions/5483830/process-waitfor-never-returns – Miichi

+0

예 유닉스 시스템 (우분투)에서 phantomjs가 설치되어 있고 스크립트가 같은 디렉토리에 있습니다. –

답변

0

터미널 클래스를 사용하여 런타임 명령을 실행할 수 있습니다. 아래 프로그램을 사용하여 원하는 출력을 생성 할 수있었습니다.

Runtime rt = Runtime.getRuntime(); 
    try{ 
     Process pr = rt.exec("pathToPhantomHome/phantomjs "+ " pathToJSfile"); 
     BufferedInputStream bis = new BufferedInputStream(pr.getInputStream()); 
     bis.close(); 
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
관련 문제