user1347198
user1347198

Reputation:

How to find an exception in swing

i have a problem with java swing. i sometimes get this NullPointerException at random times(perhaps at some painting methode?): (the project has over 100 classes, so it makes no sense to post code here, furthermore i am interested on the right approach to find this kind of excp. that is not in my source code)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at javax.swing.plaf.basic.BasicTextUI$RootView.paint(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.paintSafely(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.paint(Unknown Source) at javax.swing.plaf.basic.BasicTextUI.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.RepaintManager.paint(Unknown Source) at javax.swing.JComponent._paintImmediately(Unknown Source) at javax.swing.JComponent.paintImmediately(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source) at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$000(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.awt.EventQueue$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(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)

now my question is, how/where should i start to search? i have no idea why this excp. appears. the excp. comes at random times, what makes it difficulter to locate, also.

so, has somebody an idea where to start (or it is perhaps a swing problem not caused by myself)?

Upvotes: 1

Views: 1543

Answers (2)

Dario
Dario

Reputation: 5333

When I have problems in determine which component raises an Exception, I put an ExceptionBreakpoint in eclipse and, when the exception appears I analyse the calls stack.

This helps me in problem determination but I use this technique in a Java EE context, I don't know if could be applied in a Swing one.

Upvotes: 1

Robin
Robin

Reputation: 36621

If the error happens occasionally and it is Swing related my first guess is always a Swing threading issue, e.g. modification or access of Swing components on another thread then the EDT. This might cause an exception in the EDT, as Swing is not thread safe (more info in the Concurrency in Swing tutorial).

A good start to check for Swing threading violations is to install a custom RepaintManager, as explained in this article

I outlined more approaches in my answer on a related question.

Upvotes: 2

Related Questions