참고
https://yangbox.tistory.com/117
https://stackoverflow.com/questions/34413/why-am-i-getting-a-noclassdeffounderror-in-java
HttpServletRequest
클래스를 사용하려고 했는데 그 순간 이런 오류가 발생했다.
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
ClassNotFoundException
이 친구는 여러번 만나봤어도 NoClassDefFoundError
는 처음 만났다. ^^; 아직 해결하지 못함. 일단 언제 발생하는 녀석인지 잘 이해해보자.
Classpath에 로드하고자 하는 Class가 발견되지 않았을 때 발생
빌드에 문제가 있는 경우가 많아 clean이나 class 파일 삭제 후 재빌드로 수행 해결
Classpath
: 클래스를 찾기 위한 경로 (보통 프로젝트파일명\target\classes)
컴파일 시점에 존재했던 클래스가 런타임에 존재하지 않으면 발생하는 에러
JVM이 내부의 클래스 정의 데이터 구조에서 Class를 찾지 못하였음을 나타냄. Classpath에서 class를 로드하지 못한 것과는 다르다.
public class NoClassDefFoundErrorDemo {
public static void main(String[] args) {
try {
// The following line would throw ExceptionInInitializerError
SimpleCalculator calculator1 = new SimpleCalculator();
} catch (Throwable t) {
System.out.println(t);
}
// The following line would cause NoClassDefFoundError
SimpleCalculator calculator2 = new SimpleCalculator();
}
}
public class SimpleCalculator {
static int undefined = 1 / 0;
}