Java

ClassNotFoundException과 NoClassDefFoundError

개발만파볼까 2018. 3. 22. 17:44
728x90
반응형
SMALL

이 주제에 대해서 적는 이유는 스프링에서 mybatis에서 작업을 하다가 에러가 나게 되어 ClassNotFoundException와 NoClassDefFoundError에 대해 비교하려 한다. 겉으로보면 autowired에서의 injection 실패로 인한 에러인듯 보여서 한참 헤매기도 했다.  




그리고 스크롤바를 우단으로 쭉 넘겨보니 파란색 동그라미에 쳐진것처럼 "NoClassDeffoundError"라는 메시지가 뜨게 되었다. 처음에는 클래스가 없어서 그런거인줄 알았지만 잘못알게되어 잠깐 정리를 할까 한다.


ClassNotFoundException - 말 그대로 클래스가 존재하지 않아서 생기는 예외이다. 


NoClassDeffoundError - 해당 클래스는 존재하지만, 그 클래스 안에 존재하는 다른 클래스가 존재하지 않아서 생기는 예외이다. 



말로는 좀 이해가 안되는 거 같아 예제로 설명을 하겠다.


이 코드를 작성을 하고 bin에 존재하는 B.class를 지우고 실행을 하게 되었는데, 오른쪽과 같이 메시지가 뜨게 되었다.  A라는 클래스는 존재하지만 B라는 클래스를 지우게 되어 예외가 발생하게 된 것이다. 


즉 다시 돌아가자면 메인 클래스는 존재하지만 그 클래스 안에 존재하는 다른 클래스가 존재하지 않다는 결론을 내리게 되었다. 결국은 라이브러리가 설치가 제대로 되지 않았다는 생각을 하게 되었고, pom.xml에 라이브러리(spring-jdbc)를 추가하자마자 바로 해결 할 수 있게 되었다. 


728x90
반응형
LIST