NullPointerException im Renderer aufspüren

Copia

Grünschnabel
Hallo zusammen,

ich habe in einen meiner Renderer eine NullPointerException. Hier der Stacktrace:
Code:
java.lang.NullPointerException
	at javax.swing.JTable.prepareRenderer(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
	at javax.swing.plaf.ComponentUI.update(Unknown Source)
	at javax.swing.JComponent.paintComponent(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown Source)
	at javax.swing.JComponent.paintForceDoubleBuffered(Unknown Source)
	at javax.swing.JViewport.blitDoubleBuffered(Unknown Source)
	at javax.swing.JViewport.windowBlitPaint(Unknown Source)
	at javax.swing.JViewport.setViewPosition(Unknown Source)
	at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.hsbStateChanged(Unknown Source)
	at javax.swing.plaf.basic.BasicScrollPaneUI$Handler.stateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.fireStateChanged(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setRangeProperties(Unknown Source)
	at javax.swing.DefaultBoundedRangeModel.setValue(Unknown Source)
	at javax.swing.JScrollBar.setValue(Unknown Source)
	at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.setValueFrom(Unknown Source)
	at javax.swing.plaf.basic.BasicScrollBarUI$TrackListener.mouseDragged(Unknown Source)
	at java.awt.Component.processMouseMotionEvent(Unknown Source)
	at javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(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)

Wie krieg ich denn jetzt am klügsten raus, welche Zeile in meinem Code der Ursprung für den Fehler ist?
 
Starte dein Programm im Debugger und laufe Stück für Stück weiter, bis es irgendwann knallt...

Alternativ kannst du auch an verdächtigen Stellen System.out.println() Anweisungen einpflanzen, um zu sehen, ob bestimmte Objekte vielleicht null sind. Aber bequemer ist der Debugger!
 
Starte dein Programm im Debugger und laufe Stück für Stück weiter, bis es irgendwann knallt...

Alternativ kannst du auch an verdächtigen Stellen System.out.println() Anweisungen einpflanzen, um zu sehen, ob bestimmte Objekte vielleicht null sind. Aber bequemer ist der Debugger!

Danke für den Tipp, aber das würde ja ewig dauern! Das Programm ist schon relativ umfangreich. Ich bin ja mit dem Debugger durchaus schon ein wenig vertraut, aber allein einen Breakpoint im Renderer zu setzen, scheint mir zu umständlich, da der ja für jede Zelle aufgerufen wird. Und der Fehler tritt nicht bei jeder Zelle auf...
Jetzt hab ich versucht try-catch-Blöcke zu machen und im catch 'nen Breakpoint zu setzen, aber irgendwie funktioniert das auch nicht so recht...
 
Naja ganz oben steht doch "JTable.prepareRenderer", das deutet doch darauf hin, dass dein Renderer fuer die JTable null ist? Waere auf jeden Fall nen Ansatzpunkt
 
Du kannst für jeden Breakpoint auch Bedingungen setzen, wann angehalten werden soll :)

Weißt du denn, bei welcher Zelle das Problem auftritt? Was macht diese Zelle denn so besonders?
 
Soo, ich hab jetzt erstmal korrekt die JDK Sourcen eingebunden und konnte somit auch vernünftig debuggen, da ich keine "Unknown Source" mehr habe. Hab dadruch gemerkt, dass meine columnClass null war und deswegen der Fehler auftrat.

Du kannst für jeden Breakpoint auch Bedingungen setzen, wann angehalten werden soll :)

Weißt du denn, bei welcher Zelle das Problem auftritt? Was macht diese Zelle denn so besonders?
Nein, wusste ich bis eben noch nicht. Hab doch oben auch den Stack Trace gepostet. Daran war ja zu erkennen, dass das irgendwo außerhalb meiner eigenen Klassen auftrat. Aber durch das Einbinden der JDK-Sourcen konnte ich dann auch schnell rausfinden, in welcher Zeile die Exception auftrat :)
 
Zurück