2010-05-17 2 views
1

, когда я запускаю мое приложение я получаю следующее сообщение об ошибке:Java Runtime Exception

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){...} ошибка уходит (НЕ).

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

но если я попробую: 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; 

} 

} 

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

EDIT: когда я запускаю его через отладчик в netbeans, я получаю: Отладчик остановился на несовместимом исходном коде.

EDIT: исключение выбрасывается из-за перекрестных потоков обновлений GUI. исследуя invokeLater и invokeAndWait для решения.

РЕШЕНИЕ:invokeAndWait

+0

Не могли бы вы разместить больше кода, где происходит ошибка? – Pops

+1

Вы передаете нулевой аргумент, который хорош одним методом, но ошибочным с другим. Опубликуйте больше кода. –

+0

вот что я сказал .. ошибка не локализует себя .. я не знаю. – iTEgg

ответ

-1

Используйте источник ... начать с javax.swing.text.FlowView линии 546

+0

Я пробовал это, но это код Java lib, и я не знаю, что он говорит точно. – iTEgg

+0

Ссылка на удобство: http://www.docjar.com/html/api/javax/swing/text/FlowView.java.html – Pops

+0

@Lord Torgamus хороший, но, вероятно, неправильная версия, поскольку последняя строка в этом исходном файле - 412 Правильный файл java будет находиться в 'src.zip' –

1

ВЫЗОВ МАСТЕРА 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

На самом деле это viewBuffer, который является нулевым, поле класса FlowView. – Trejkaz

Смежные вопросы