NoClassDefFoundError — 클래스 정의를 찾을 수 없을 때
NoClassDefFoundError — 클래스 정의를 찾을 수 없을 때
NoClassDefFoundError는 JVM이나 ClassLoader 인스턴스가 (일반 메서드 호출의 일부로, 또는 new 표현식으로 새 인스턴스를 만드는 일부로) 클래스의 정의(definition)를 로드하려 했는데 그 정의를 찾을 수 없을 때 던져지는 에러예요.
본문
흥미로운 점은, 찾는 클래스 정의는 현재 실행 중인 클래스를 컴파일할 당시에는 존재했다는 거예요. 그런데 런타임에는 그 정의를 더 이상 찾을 수 없는 상태인 거죠. 예를 들어 의존 라이브러리 JAR이 classpath에서 빠졌거나, 클래스 파일이 삭제됐거나, 클래스 로딩이 부분적으로 실패한 경우에 흔히 나와요. 그래서 "컴파일은 됐는데 런타임에서 클래스를 못 찾겠다"는 신호로 해석하는 게 정확해요.
상속 구조는 다음과 같아요.
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.NoClassDefFoundError
생성자
NoClassDefFoundError()— 상세 메시지 없이 생성해요.NoClassDefFoundError(String s)— 지정된 상세 메시지로 생성해요.