java.lang.NoClassDefFoundError vs java.lang.ClassNotFoundException

min·2022년 2월 21일
0

참고
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는 처음 만났다. ^^; 아직 해결하지 못함. 일단 언제 발생하는 녀석인지 잘 이해해보자.

ClassNotFoundException

Classpath에 로드하고자 하는 Class가 발견되지 않았을 때 발생
빌드에 문제가 있는 경우가 많아 clean이나 class 파일 삭제 후 재빌드로 수행 해결

Classpath: 클래스를 찾기 위한 경로 (보통 프로젝트파일명\target\classes)

NoClassDefFoundError

컴파일 시점에 존재했던 클래스가 런타임에 존재하지 않으면 발생하는 에러
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;
}
profile
기록으로 기억하기

0개의 댓글

관련 채용 정보