при запуске приложения я получаю следующую ошибку:
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