2012-07-25 2 views
1

나는 자바 스윙에 문제가있다. 때로는 NullPointerException을 임의의 시간에 얻을 수 있습니다 (아마도 일부 그림 메서드에서?) : (프로젝트에 100 개 이상의 클래스가 있으므로 여기에 코드를 게시하는 데 아무런 의미가 없으므로이 접근 방식을 찾는 것이 좋습니다. . 그 javax.swing.plaf.basic.BasicTextUI $ RootView.paint (알 수없는 소스) 에서 스레드 "AWT-EventQueue의-0"java.lang.NullPointerException이 에서스윙에서 예외를 찾는 방법

예외) 내 소스 코드에없는 (Unknown Source) javax.swing.plaf.basic.BasicTextUI.paint (Unknown Source) javax.swing.JCompo에서 nent.paintComponent (알 수없는 소스)가 javax.swing.RepaintManager $ PaintManager.paintDoubleBuffered에서 javax.swing.JComponent.paintToOffscreen (알 수없는 소스) 에서 javax.swing.JComponent.paint (알 수없는 소스) (알 수없는 소스) 에서 에서 javax.swing.RepaintManager $ PaintManager.paint (Unknown Source) 에서 javax.swing.RepaintManager.paint (알 수없는 소스) 에서 javax.swing.JComponent._paintImmediately (알 수없는 소스) 에서 javax.swing.JComponent.paintImmediately (알 수 없음 Source) 에서 javax.swing.RepaintManager.paintDirtyRegions (알 수없는 소스) 에서 javax.swing.RepaintManager.paintDirtyRegions (알 수없는 소스) 에서 javax.swing.RepaintManager.seqPaintDirtyRegions (알 수없는 소스)java.awt.EventQueue에서 java.awt.EventQueue.dispatchEventImpl (알 수없는 소스) 에서 java.awt.event.InvocationEvent.dispatch (알 수없는 소스) 에서 javax.swing.SystemEventQueueUtilities $ ComponentWorkRequest.run (알 수없는 소스) 에서. 알 수없는 소스) at java.awt.EventQueue $ 1.run (알 수없는 소스) at java.awt.EventQueue $ 1.run (알 수없는 소스) at java.security.AccessController.doPrivileged (기본 메소드) at java.awt.EventDispatchThread.pumpEventsForFilte에서 java.awt.EventQueue.dispatchEvent (알 수없는 소스) java.awt.EventDispatchThread.pumpOneEventForFilters에서 (알 수없는 소스) 에서 java.security.AccessControlContext $ 1.doIntersectionPrivilege (알 수없는 소스) R (알 소스)에 java.awt.EventDispatchThread.pumpEventsForHierarchy (알 소스)에 java.awt.EventDispatchThread.pumpEvents (알 소스)에 java.awt.EventDispatchThread.pumpEvents (알 소스)에있는 java.awt . EventDispatchThread.run (알 수없는 출처)

지금 내 질문은 어떻게 검색해야합니까? 나는 왜이 excp인지 전혀 모른다. 나타납니다. excp. 무작위 적으로 발생하며, 무엇을 찾기가 까다 롭습니다.

누군가가 아이디어를 어디에서 시작해야합니까? (또는 아마도 나 자신에 기인하지 않는 스윙 문제일까요?)

+1

참고 사항 [이 질문] (http://stackoverflow.com/questions/11012831/exception-with-stacktrace-containing-only-java-library-calls/11013016) – Robin

답변

3

오류가 가끔 발생하고 스윙 관련이 있다면 내 첫 번째 추측은 항상 스윙 스레딩 문제입니다 (예 : 수정 또는 다른 스레드에서 스윙 구성 요소의 액세스 EDT.스윙은 스레드 안전이 아니므로 EDT에서 예외가 발생할 수 있습니다 (Concurrency in Swing 자습서의 자세한 내용). this article

설명 내가 more approaches in my answer on a related question을 설명 된대로

스윙 스레딩 위반을 확인하는 좋은 시작은, 사용자 정의 RepaintManager를 설치하는 것입니다.

+0

나는 이것이 도움이 될 수 있다고 생각합니다. 스윙의 동시성 내가 작업하고 도움이 될 것입니다. 감사합니다. – immerhart

2

예외를 발생시키는 구성 요소를 결정하는 데 문제가있는 경우 ExceptionBreakpoint를 Eclipse에 넣고 예외가 나타나면 호출 스택을 분석합니다.

이것은 문제 해결에 도움이되지만 Java EE 컨텍스트에서이 기술을 사용합니다. Swing에 적용 할 수 있는지 여부는 알 수 없습니다.

관련 문제