2012-07-25 26 views
1

我有一個java swing的問題。我有時會得到這個NullPointerException異常在隨機時間(也許在一些繪畫梅索德?): (該項目擁有超過100類,所以它是沒有意義的,張貼在這裏的代碼,而且我很感興趣的正確的方法來找到這種EXCP的,是不是在我的源代碼)如何找到擺動異常

在javax.swing.plaf.basic.BasicTextUI中的$ RootView.paint(來源不明) 異常線程 「AWT-EventQueue的-0」 顯示java.lang.NullPointerException 在javax.swing.plaf.basic.BasicTextUI.paintSafely(未知來源) 在javax.swing.plaf.basic.BasicTextUI.paint(未知來源) 在javax.swing.plaf.basic.BasicTextUI.update(未知來源) at javax.swing.JCompo nent.paintComponent(未知源) at javax.swing.JComponent.paint(未知源) at javax.swing.JComponent.paintToOffscreen(未知源) at javax.swing.RepaintManager $ PaintManager.paintDoubleBuffered(未知源) at (未知源) at javax.swing.RepaintManager.paint(未知源) (未知源) 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 。訪問$ 000(來源不明) 在java.awt.EventQueue中的$ 1.run(來源不明) 在java.awt.EventQueue中的$ 1.run(來源不明) 在java.security.AccessController.doPrivileged(本機方法) 在java.security.AccessControlContext $ 1.doIntersectionPrivilege(來源不明) 在java.awt.EventQueue.dispatchEvent(來源不明) 在java.awt.EventDispatchThread.pumpOneEventForFilters(來源不明) 在java.awt.EventDispatchThread.pumpEventsForFilte R(來源不明) 在java.awt.EventDispatchThread.pumpEventsForHierarchy(未知來源) 在java.awt.EventDispatchThread.pumpEvents(未知來源) 在java.awt.EventDispatchThread.pumpEvents(未知來源) 在java.awt中。 EventDispatchThread.run(未知來源)

現在我的問題是,我該如何/應該在哪裏開始搜索?我不知道這是爲什麼。出現。提示。隨機出現的時候,什麼使得它難以定位,也是如此。

因此,有人來過的知道從哪裏開始(或它也許不是自己造成的擺動的問題)?

+1

另請參見[這個問題](http://stackoverflow.com/questions/11012831/exception-with-stacktrace-containing-only-java-library-calls/11013016) – Robin 2012-07-25 08:49:48

回答

3

如果錯誤發生的偶然,它是搖擺相關的我的第一個猜測始終是一個Swing線程問題,例如修改或訪問另一個線程上的Swing組件,然後EDT。這可能會導致EDT中出現異常,因爲Swing不是線程安全的(更多信息,請參閱Concurrency in Swing教程)。

一個良好的開端,以檢查Swing線程違法行爲是安裝自定義RepaintManager,如this article

解釋我概述more approaches in my answer on a related question

+0

我認爲這可以幫助...: 併發在鞦韆 我會通過它,也許這有助於。 謝謝 – immerhart 2012-07-25 08:57:30

2

當我在確定哪些成分會引發異常的問題,我把一個ExceptionBreakpoint在Eclipse和,異常出現時我分析呼叫棧。

這有助於我判斷問題,但我用在Java EE上下文這種技術,我不知道是否能在一個Swing一個應用。