본문 바로가기
IT/Etc

서버 기동 시 META-INF/versions/9/ 관련 에러 (TOMCAT/JENKINS 등)

by 스터딩아재 2021. 12. 16.
반응형

 

스터딩아재

 

이번 log4j 버전 이슈로 업데이트를 하는 와중에 로컬 환경과 jenkins(Ant)에서 서버를 시작할 때 META-INF/versions/9/...와 같은 오류가 났습니다. 왜 발생하는지와 해결방법을 공유하겠습니다.

 

에러 내용

 

[WEB-3911] Processing @HanlesTypes of ServletContainerInitializers 
failed for the class [META-INF/versions/9/org/apache/logging/log4j/util/StackLocator.class] 
but the deployment process will continue.
  <<__Exception__>>
  java.lang.IllegalArgumentException
  ...
  log4j-core-2.16.jar
  ...

 

 

원인

추가한 jar의 java 버전이 빌드하는 톰캣, 젠킨스의 지원 버전과 맞지 않을 때 발생하는 오류입니다.

 

에러 로그를 찾아보면 문제의 jar파일이 찍힐 것이고, 파일을 열어보면 지원하지 않는 class를 호출하기 때문에 발생합니다. 

 

 

해결방법

추가한 log4j-core-2.16.jar는 java 8이상에서 지원되는 파일이었습니다. jar를 까보면

 

레거시는 이미 jdk 1.8인데,

jenkins 설정이 1.7로 되있어서 젠킨스 설정을 변경했습니다.

(build.sh, build.properties 등)

(Maven의 경우 pom.xml, Gradle은 build.gradle 혹은 settings.gradle 등)

 

톰캣은 자바8 이상 지원하는 버전으로 업데이트로 해결했습니다.

(당시 버전 apache-tomcat-7.0.99)

 

거의 없긴하지만 레거시가 jdk 1.7버전이면 적용한 jar의 버전을 맞춰서 낮추는 수 밖에 ㅠ

 

 

그리드형

댓글