Java Runtime Exception - PullRequest
       1

Java Runtime Exception

2 голосов
/ 17 мая 2010

при запуске приложения я получаю следующую ошибку:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.text.FlowView$FlowStrategy.layoutRow(FlowView.java:546)
    at javax.swing.text.FlowView$FlowStrategy.layout(FlowView.java:460)
    at javax.swing.text.FlowView.layout(FlowView.java:184)
    at javax.swing.text.BoxView.setSize(BoxView.java:380)
    at javax.swing.text.BoxView.updateChildSizes(BoxView.java:349)
    at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:331)
    at javax.swing.text.BoxView.layout(BoxView.java:691)
    at javax.swing.text.BoxView.setSize(BoxView.java:380)
    at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
    at javax.swing.plaf.basic.BasicTextUI.modelToView(BasicTextUI.java:1034)
    at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1291)
    at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1270)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

, поскольку ошибка не затрагивает ни одного из моих классов, как мне найти причину этого?

если я попытаюсь: public void notifyChatMessage(String message){...} ошибка исчезнет (НЕ).

edit: при дальнейшем тестировании оказывается, что вышеприведенное также генерирует ошибку.

но если я попытаюсь: public void notifyChatMessage(Object message){...} сообщается об ошибке.

пожалуйста, сообщите.

EDIT:

        public void notifyChatMessage(String message){


         AppMessage appMessage = new AppMessage(AppMessage.Target.Chat, message);
         setChanged();
         notifyObservers(appMessage);

     }

AppMessage:

public class AppMessage implements Serializable {

/**
 * Message header for target: game, chat
 */
public enum Target {
    Game, Chat
}

/**
 * Holds target
 */
public Target target;

/**
 * Holds state message
 */
public Object message;

/**
 * Construct using parameter data
 * @param target
 * @param message
 */
public AppMessage(Target target, Object message){

    this.target = target;
    this.message = message;

}

}

РЕДАКТИРОВАТЬ: даже с отчетом об ошибке программа продолжает работать, и я не вижу никакого недостатка производительности, т.е. ошибка при выполнении, которая усложняет задачу локализации проблемы.

РЕДАКТИРОВАТЬ: когда я запускаю его через отладчик в NetBeans, я получаю: Отладчик остановлен на некомпилируемом исходном коде. РЕДАКТИРОВАТЬ: исключение выдается из-за межпотоковых обновлений GUI. расследование invokeLater и invokeAndWait для решения.

РЕШЕНИЕ: invokeAndWait

Ответы [ 2 ]

1 голос
/ 17 мая 2010

Вызов javax.swing.text.FlowView$FlowStrategy.layoutRow(FlowView.java:546) пытается обработать что-то, что NULL. Смотря на свою подпись. layoutRow (FlowView fv, int rowIndex, int pos) единственное, что может быть NULL, это FlowView fv, поскольку примитивы int не могут быть NULL. Поэтому, не имея кода для запуска и пошаговой отладки, я бы сказал, что где-то что-то либо не устанавливает FlowView, либо устанавливает NULL.

0 голосов
/ 17 мая 2010

Использовать источник ... начать с javax.swing.text.FlowView строки 546

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