2012-05-09 3 views
7

나는 최근 헬리오스로 업그레이드에 내가 클래스 (예를 들어 Cat myCat = new Cat();)에 대한 생성자에 단계마다 간다, 일식 디버거는는, 일식 디버거가 이제 네이티브 코드

java stack trace entering instantiation와 스택을 보여줍니다

실제 생성자 코드를 얻으려면 몇 번 단계별로 나눠야합니다. 이것은 모든 클래스에서 발생하며 스택에도 불구하고 콘솔에 오류 메시지가 표시되지 않습니다. 이 문제를 해결하여 클래스의 생성자에 직접 들어가는 방법은 무엇입니까?

이것은 클래스가 처음 사용될 때만 발생하며 현재 파일과 동일한 src 파일에있는 클래스의 경우에도 발생합니다.

+0

클래스가 있습니까? ClassNotFoundException이 Throw되는 것처럼 보입니다 ... – pstanton

+1

클래스가 확실히 존재하고, 디버거가 결국 생성자에 들어가고 프로그램이 성공적으로 실행됩니다. – cplusplus

답변

13

이클립스는 자바 디버거 환경 설정에서 단계 필터 환경 설정을 가지고 있습니다. 기본 설정은 java.lang.ClassLoader이지만, 작동하지 않습니다. 이것은 최근에 jre7을 사용하여 설치하고 전환 한 것과 관련이있을 수 있습니다. 내 문제를 해결하기 위해 java.lang 패키지의 모든 코드를 단계별로 실행하기위한 필터를 추가했습니다.

enter image description here

0

Eclipse에서보고 된 스택 트랙에서 ClassNotFoundException이 초기화되었고 던져진 것 같습니다. 작성한 응용 프로그램에 문제가 있습니까?

클래스의 생성자에 중단 점을 설정 했습니까? 당신은 생성자를 전혀 들여다 볼 수 없었습니다.

Class.forname()을 사용했거나 가져 오기를 통해 클래스를 JRE에 소개하셨습니까?

+0

전혀 문제가 없으며 생성자를 들여다 볼 수있었습니다. – cplusplus

+0

클래스를 가져 오는 데 특별한 것은 없습니다. – cplusplus

5

ClassNotFoundException이 클래스 로딩의 일부로 발생한다고 생각합니다. 문제는 예외가 발생했을 때 트리거하도록 설정된 중단 점이 있다는 것입니다. 내 생각 엔 이클립스 버전은 기본적으로이 중단 점을 가지고 있지만 이전 버전에서는 그렇지 않았다.

비슷한 문제를보고하고 그 중단 점을 비활성화하는 해결책을 제공하는 this link을 확인하십시오.

(교육의 관심은 물고기와 모든 것을하기에, 구글 검색어는 "디버거 런처 $의 appclassloader 일식 '이었다.)

+0

이것은 실제로 문제이며 아직로드되지 않은 클래스에서 메서드를 처음 호출 할 때 발생합니다. 반원들에게 돌아 오는 데 필요한만큼 F7 (return)을 누르십시오. 나는 보통 반에서 F7을 8 번 눌러 내 반에서 일한다는 것을 알았습니다. –

+0

Btw, 당신은 또한 당신이 생성자에 들어 서기 전에 클래스를로드함으로써이 문제를 해결할 수 있을지 궁금합니다. 예를 들어, 디버거'Class.forName (Cat.class.getName())'에서 평가한다면? – yshavit

+0

로드 된 클래스를 가져 오는 모든 것이이 문제를 무시합니다. –