AWT EventQueue NullPointerException - PullRequest
       6

AWT EventQueue NullPointerException

0 голосов
/ 19 апреля 2010

У меня есть подписанный апплет, который записывает текстовые файлы в указанный каталог на клиентской рабочей станции.

Когда я впервые загружал апплет в веб-браузер, проблем не было. Управляет загрузкой в ​​браузере и записывает данные в текстовый файл. Но когда я продолжаю загружать его снова, он просто не загружается. Все, что я вижу, это изображение загрузки Java. Даже после 10 минут ожидания апплет все равно не загрузится.

К сожалению, это происходит не всегда. Я попытался закрыть веб-браузер и очистить все его кэши и временные файлы, но иногда это происходит снова.

На клиентской рабочей станции установлена ​​JRE 1.6.0_16, и она работает на Windows XP, протестированной на IE8.

Ниже приведен код тега апплета на странице HTML.

<applet code="com.applet.files.PrintTkt.class" archive="<%=BaseURL %>/UT/SPrintTkt.jar" width="500" height="450">
    <param NAME="ROOT" value="<%= BaseURL %>">
    <param NAME="CHARSET" value="<%= charset %>">
    <param NAME="batfile" value="<%= batfile %>">
    <param NAME="filename" value="<%= filename %>">
    <param NAME="PAGE_ID" value="PrintTkt">
</applet>

Ниже приведена трассировка стека из консоли Java. Исключения ниже были выброшены, только когда я обновил страницу, перешел на другую страницу или вышел из нашего веб-приложения. До этого трассировка стека показала только, что апплет загружается.

basic: Loading Java Applet ...
basic: Applet initialized
basic: Removed progress listener: sun.plugin.util.GrayBoxPainter$GrayBoxProgressListener@59a34
basic: Applet made visible
basic: Starting applet
basic: completed perf rollup
basic: Applet started
basic: Told clients applet is started
Exception in thread "AWT-EventQueue-6" java.lang.NullPointerException
    at java.awt.LightweightDispatcher$3.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-6" java.lang.NullPointerException
    at java.awt.LightweightDispatcher$3.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-6" java.lang.NullPointerException
    at java.awt.LightweightDispatcher$3.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

1 Ответ

0 голосов
/ 20 апреля 2010

Я встречал варианты этого раньше. Когда страница, содержащая апплет, перезагружается, она может повторно использовать загрузчик классов при условии, что она не была завершена. Когда это происходит, классы, которые уже были загружены этим загрузчиком классов, не перезагружаются. Это может вызвать некоторые неприятные проблемы со статическими членами. Класс уже загружен, поэтому статические классы не инициализируются повторно. И вы получаете статический класс, который не является нулевым, но значение, которое он содержит, больше не является допустимым.

Проверьте ваш код на наличие статических элементов и устраните, где это возможно. Если вы не можете устранить их, добавьте хуки к методу остановки апплета, чтобы установить статические значения в ноль.

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