본문 바로가기

디버깅

[Tomcat] war파일 배포에서 발생하는 에러 해결

반응형

Caused by: java.lang.UnsupportedClassVersionError:  Unsupported major.minor version 52.0

결론부터 말하자면.. Tomcat의 버전뿐만 아니라 JRE, JDK의 버전 일치 여부를 확인하면서 디버깅한 글입니다.

개인 서버에 스프링 웹 서비스를 간단하게 개발 & 배포까지 하고 있는데요. 딱히 트래픽이 많은건 아니지만 개인 공부겸.. 포트 폴리오 겸 열어두고 있는 서버입니다. 두어달 전부터 올려두고 있는데.. 벌써 이쪽에 배포를 못해도 최소 5번 이상은 했는데.. 배포할때 문제가 생겼던 적은 한번도 없습니다. 단지 처음에 좀 삽질을 한거 말고는...

아직 젠킨스까지 쓸만큼은 아니어서 그냥 손수 배포하고 있지요. 문제는 오늘 발생했는데.. 한참 수정 사항을 확인하고 빌드해서 war파일을 배포하려고 올렸는데.. 몇번을 시도해도 절대로 접속이 제대로 되지 않았고..


로컬 환경에서는 아무 이상없이 잘 돌아갔습니다.


전역적으로 클래스에 관련된 에러가 났는데.. 주로


org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class

Error loading class [com.~~.dao.FileDAOImpl] for bean with name 'fileDAOImpl' defined in file


이런 클래스를 찾을수 없는 에러가 났죠.. 로그가 상당히 많고.. 콘솔을 웹 환경에서 대강대강 본게 실수 였습니다-_-; 여튼 그렇게 1시간을 삽질하고 도저히 코드 문제는 아니라는 생각이 들어서.. 로그를 아주 찬찬히 살펴 봤습니다.




자세히 보니 첫 에러 지점 부근에 이런 에러가 있더군요.

Caused by: java.lang.UnsupportedClassVersionError: com/~~/dao/FileDAOImpl : Unsupported major.minor version 52.0

이걸 보고도 반신반의 했는데.. 결론은 JRE, JDK 버전이 하위버전이라 그렇더군요. 개발환경은 JDK8 기반이고..

서버의 tomcat 쪽은 JDK 7.. 톰캣과 JDK를 직접 다운받은건 아니고.. docker에서 tomcat 버전만 맞춰서 돌리고 있었는데

서버 구동시 로그를 보니 JDK가 7 버전으로 들어있더군요.


tomcat과 jdk를 개발 환경과 맞춰서 배포해보니 바로 에러 없이 배포가 되기 시작했는데.. 이걸 디버깅하고 나니 1시간 가까이 지나가버린 -_-;

그전에는 이 세팅으로도 배포가 잘되서 설마 JDK 버전 이슈 일줄은 몰랐던 제 잘못이긴 하네요.

여하튼 누군가 비슷한 삽질을 금방 해결 하길 바라며..



출처 : 개인 경험

반응형