달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2011. 10. 11. 16:41

NoClassDefFoundError vs ClassNotFoundException 그거/Java2011. 10. 11. 16:41


NoClassDefFoundError
- 컴파일 시점
에는 존재했으나, 실행 내부적으로 loading 되는 class가 없을 때

예제) 아래와 같은 java 자원들을 컴파일 한 후 B.class 파일을 삭제하고 java C 하면 NoClassDefFoundError 발생

Class A extends B {
}

Class B {


Class C {
    public static void main(String[] args) {
        A a = new A a();
    }


예제)  아래와 같은 java 자원들을 컴파일 한 후 D.class 파일을 삭제하고 java E 하면 NoClassDefFoundError 발생

class D {
}

 Class E {

    public static void main(String[] args) {

        D d = new D();

    }



ClassNotFoundException
해당 class 파일이 없을 때(클래스를 로딩하려는 명시적인 시도가 실패할 경우)

예)  아래와 같은 java 자원들을 컴파일 한 후 C.class 파일을 삭제하고 java C 하면 ClassNotFoundException 발생

Class A extends B {

}


Class B {


Class C {

    public static void main(String[] args) {

        A a = new A a();

    }



정리하면,

ClassNotFoundException
 => ClassLoader가 로딩하려고 하는 class가 존재하지 않을 경우 발생
NoDefFoundClassError
 => 
ClassLoader가 로딩하는 명시적인 class 내부에서 묵시적으로 로딩하고자 하는 class가 존재하지 않을 경우 발생
:
Posted by 뽀기