이클립스 메이븐 플러그인 m2e 는 의존성 설정된 프로젝트가 로컬에 존재하는 경우 로컬 프로젝트를 참조하고, 존재하지 않는 경우 원격 저장소(넥서스) 에서 jar 를 받아와 참조한다.
그런데 로컬에 존재하는 프로젝트의 jar 파일이 톰캣의 server path lib 경로로 배포(복사)되지 않아서 서버 동작 시 ClassNotFoundException 이 던져지는 경우가 있다.
이 경우 다음과 같은 확인 절차를 따른다.
1. 먼저 web 프로젝트의 pom.xml 재확인
-> 의존성 설정이 정확히 되어있는지 다시 확인한다.
2. 의존 프로젝트의 의존성 트리 확인
-> web 프로젝트 -> 의존 프로젝트가 간접 의존 관계인 경우 그 연결고리가 제대로 맺어져 있는지 확인한다.
3. web 프로젝트의 Java Build path 확인
-> 프로젝트 properties 의 Java Build Path 에서 Maven Dependencies 에 의존 프로젝트가 제대로 떠 있는지 확인한다. 로컬 프로젝트의 경우 로컬 프로젝트 아이콘으로 존재해야 한다.
4. 의존 프로젝트의 Deployment Assembly 확인
-> 여기가 관건이다. 위 1,2,3 은 보통 제대로 설정이 되어 있다. 그럼에도 불구하고 이 문제가 발생하는 경우, 의존 프로젝트의 properties 의 Deployment Assembly 를 본다. 여기의 설정이 다른 정상적인 프로젝트의 설정과 일치하는지 확인한다. 프로젝트 설정이 틀어진 경우 이 메뉴를 클릭하면
...contains invalid values 라는 오류 안내를 내뱉고 아예 메뉴가 열리지 않을 수 있는데, 이 경우 다른 정상적인 프로젝트의 다음 경로의 파일들을 가져와 덮어 쓴다:
- .settings
- .classpath
- .project
그리고 Deployment Assembly 메뉴가 정상적으로 열리는지 확인한다.
확인이 되었으면 프로젝트를 clean-install 후 web 프로젝트를 clean-install, 톰캣 clean 을 한 번 해주자.
'Java > 트러블슈팅' 카테고리의 다른 글
제우스 DB2 ERRORCODE=-4461, SQLSTATE=42815 (0) | 2018.04.30 |
---|---|
현재 실행 중인 클래스의 물리적 위치 알아내기 (0) | 2018.04.30 |