2011-01-19 2 views
1

Java 응용 프로그램을 통해로드 된 DOM html 페이지에서 "returnAllLinkTexts()"이라는 Javascript 함수를 실행하려고합니다. 아래 라인은 Swing Buton에 의해 실행됩니다.자바 스크립트를 실행하려고 할 때 "AWT-EventQueue-0"예외 java.lang.NullPointerException

myscript = browser.executeJavascript("returnAllLinkTexts()").toString(); //Line 407 

때때로 다음과 같은 예외가 발생합니다. Java 응용 프로그램이 종료되거나 충돌하지 않습니다.

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException com.demo.Main$BigButtonListener.actionPerformed(Main.java:407) 

약 20 회 반복 시도하기 위해 다음을 시도했지만이 시점까지 도달하지 않았습니다. 예외는 407

int st = 0; 
while (myscript == null){ 
myscript = browser.executeJavascript("gogo()").toString();        if (myscript != null) break; 
if (shit == 20) break; 
sht++; 
} 

UPDATE @ 즉시 발생 :

returnAllLinkTexts();

function returnAllLinkTexts(){ 
var mydata = new Array(); 

$('a', document).each(function() { 
    mydata.push($(this).text()); 
}); 

return mydata; 
} 

답변

1

내가 returnAllLinkTexts이 파괴되는 이유를 생각할 수있는 유일한 것은 (따라서 당신이 널 수) jQuery를로드하기 전에이 호출 할 때입니다 당신의 반환 값을 확인 .

가능하면 페이지로드가 완료된 후에 browser.executeJavascript을 호출 해보십시오. 그렇지 않으면 이미 제안 된 다른 항목과 마찬가지로 null이 있는지 확인하고 null이 될 때까지 계속 호출 할 수 있습니다 (예 : 타이머 사용).

편집 : 당신은 이미 문자열로 반환 값을 사용하고 있기 때문에, 당신은 예를 들어,로 시작하는 문자열을 반환 할 수 있습니다

return mydata.join(","); 

는 쉼표로 구분 된 링크 텍스트를 반환합니다.

+0

올바른 방향이지만 jQuery가 이미로드되었습니다. 이 Java 예외는 returnAllLinkTexts가 사용될 때만 발생하는 것으로 보입니다 .... 단순한 텍스트 일 ​​경우 Java NullPointerExceptions .... 약 1 분이 걸리는 100 개의 루프를 호출하려고 시도했지만 여전히 null입니다. ... 다른 시간에 잘 작동하고 있습니다 ... 지금 당장은 완전히 좌절했습니다. – KJW

+0

@Kim weird 실제로, 편집을 참조하십시오. JS 함수 내에서 일반 문자열을 반환하면 문제가 해결 될 수 있습니다. –

+0

returnAllLinkTexts()에서 jQuery 함수와 메서드를 제거하면 모든 것이 정결 해 보였기 때문에 이것이 문제라고 생각합니다. jQuery 함수를 추가 할 때 문제가 발생합니다. – KJW

0

무조건 반환 값에 toString()를 호출하지 마십시오 자바 스크립트 함수가 될 수하는 없는. 항상 첫 번째로 null을 확인하십시오!

1

null이 될 가능성이있는 객체에서 toString()을 호출하고 있습니다.

-> 첫째, 나는 시도-catch 블록

로 둘러싸는 것하지만 문제는 이유입니다 반환 값 가능한 null이? ... 기능에

를 Nur

+0

위의 함수를 제공했지만 .... 왜 null을 반환하는지는 알 수 없습니다. 페이지에 100 % 확실성을 가진 링크가 있습니다. – KJW

관련 문제