Исключение в потоке "AWT-EventQueue-0" java.lang.NullPointerException при попытке выполнить Javascript - PullRequest
1 голос
/ 19 января 2011

Я пытаюсь выполнить функцию Javascript с именем "returnAllLinkTexts()" на HTML-странице DOM, загруженной через мое Java-приложение. Нижняя строка выполнена Swing Buton.

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

Это функция Javascript returnAllLinkTexts();

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

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

return mydata;
}

Ответы [ 3 ]

1 голос
/ 19 января 2011

Вы вызываете toString () для потенциально нулевого объекта.

-> Во-первых, я бы окружил блок try-catch

Но вопрос почему возвращаемое значение возможно-ноль ?Проверьте возвращаемое значение в функции ..

Nur

1 голос
/ 19 января 2011

Единственное, что я могу вспомнить, почему returnAllLinkTexts ломается (т. Е. Вы получаете ноль), это когда он вызывается до загрузки jQuery.

Если возможно, попробуйте вызвать browser.executeJavascript после завершения загрузки страницыв противном случае проверьте нулевое значение, как уже предлагали другие, и вы можете продолжать пытаться вызвать его (используя таймер, например), пока оно не станет нулевым.

Редактировать: поскольку вы уже используете возвращаемое значение в качестве строки, вы можете вернутьстрока для начала, например:

return mydata.join(",");

Возвращает текст ссылки, разделенный запятой.

0 голосов
/ 19 января 2011

Не вызывайте безусловно toString () для возвращаемого значения, которое может быть нулевым.Всегда проверяйте сначала на ноль!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...