본문 바로가기
Language/Java

ClassNotFoundException 원인 및 해결방법

by 나비와꽃기린 2016. 11. 18.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


오늘, 한 고객사의 담당자가 소스 응답 데이터 확인에 대한 방법을

가이드 해달라고 부탁해서 사이트지원에 나갔다.


분석을 위해 개발계 환경에 배포되어 있는 파일을 실행해 보았더니,

Log 파일에 error가 뜨는것을 발견했다.


error는 개발 중 자주 보는 Class에 관한 내용이었는데

생각해보니 블로그에 정리해둔 내용이 없는 것 같아 이런 포스팅을 적는다.,




1. java.lang.ClassNotFoundException


컴파일된 java class 파일을 찾을 수 없다. 라는 내용이다.

하지만 가끔 해당 경로에 분명 파일이 있음에도, ClassNotFoundException 이 떨어질 때가 있다.

보통 빌드에 문제가 있는 경우라 clean(강제 컴파일 / Project>clean)을 하거나, class 파일이 생성된 폴더로 가서 해당 class 파일을 삭제하고 재 빌드를 하여 해결을 한다.

톰캣에서 실행하고 있다면 주로 \Workspace\.metadata\.plugins\org.eclipse.wst.server.core\ 이 경로에 class 파일이 위치하는지 확인해보고, 따로 tomcat 경로를 지정하지 않았다면 workspace로 지정해놓은 경로에서 tmp 하위 디렉토리들을 확인해본다.


또는 의존성 라이브러리 간 충돌이나 servlet version 호환문제로 jsp 컴파일을 하지 못할 때 나타나기도 한다. javax.servlet-api lib가 있는지 확인해본다.

그 외에도 tomcat, 이클립스, java버전 확인,메이븐 path확인 등으로 해결할 수 있다.

 

<해당 에러에 도움되는 tip 및 상식>

(1) 이클립스 상단의 Project >Build Automatically 항목 체크

 - 체크되어 있는 경우 저장시 자동으로 소스파일이 컴파일 된다.

(2) JSP 파일은 서블릿 컨테이너에 의해 클래스로 변환 컴파일이 된 후 실행이 된다.



2. Unable to compile class for JSP


이 에러는 에러 문구만 해석해도 대부분 해결이 가능할 것 같다.

JSP 문법 중 소스를 잘 못 작성했을 때 나는 오류이다.. 대표적 예를 들자면 값을 출력하는

부분에 <%= %>가 아닌 <% %> 를 작성하여 문법적인 오류를 냈을 때..와 같은 상황에 발생한다.