1 분 소요

Tomcat과 JDK의 버전 호환성 문제로 인해 실행 에러 java.lang.reflect.InvocationTargetException

기존 환경

OS : CentOS release 6.9 (Final)
JDK : OpenJDK1.7.0_221 WAS : Jeus


목표

- 서버에 구동중인 애플리케이션을 임시로 하나 더 구축한다.
- WAS는 Jeus 대신 Tomcat을 사용한다.
- Java는 OpenJDK 대신 Oracle JDK1.8 버전을 사용한다.
- 위 과정에서 발생한 오류 및 해결 과정을 기록한다.


프로젝트 Deploy 전 기본 Tomcat 설정하여 인터넷으로 접근 되는지 확인(고양이)

1차 시도 : 실패

OS : CentOS release 6.9 (Final)
JDK : JDK1.8.0_361
WAS : Apache Tomcat 8.5.97

오류 발생

java.lang.reflect.InvocationTargetException


2차 시도 : 실패

OS : CentOS release 6.9 (Final)
JDK : JDK1.8.0_361
WAS : Apache Tomcat 8.5.100

같은 오류 발생

java.lang.reflect.InvocationTargetException


3차 시도 : 성공 ( 최종 환경 )

OS : CentOS release 6.9 (Final)
JDK : JDK1.8.0_261
WAS : Apache Tomcat 9.0.68

  • Tomcat의 catalina.sh에 JAVA_HOME 및 JRE_HOME 설정
      # catalina.sh 내용 편집기 열기
      $ vim apache-tomcat/bin/catalina.sh
    
      ## catalina.sh 상단에 아래 내용 입력
      JAVA_HOME=/usr/local/java/jdk1.8_361
      JRE_HOME=/usr/local/java/jdk1.8_361/jre
    


결론

  • 결국 Tomcat 버전과 JDK 버전의 호환성 문제로 발생한 오류였다.
  • 마이너 버전까지 맞춰야 에러가 사라진다.
  • 경험상 오류를 해결하려고 하는 것 보다 버전을 맞추는 것이 현명하다.
  • 따라서 안정적인 환경을 기록해 두어야 한다.
  • 단, 해당 오류가 버전 문제인지는 아닌지 판단할 수 있어야 한다.
  • 해결책으로 Docker를 사용함으로써 많은 문제를 해소할 수 있다.

태그: ,

카테고리:

업데이트:

댓글남기기