본문 바로가기

Back-End/Spring

[Spring] Spring Tomcat 10 실행 시 에러 (java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener)

728x90

맥북 터미널에서 Homebrew 로 tomcat 을 설치한 후 Spring 프로젝트를 실행했는데, 다음과 같은 에러가 발생했습니다.

스프링 프로젝트 구동 시 에러 발생

 

에러의 원인은 Tomcat 의 버전이 10 이었기 때문이었습니다. Tomcat 10 은 모든 패키지의 이름을 javax.servlet 에서 Jakarta EE 9 의 일부인 jakarta.servlet 으로 바꿨는데, 스프링 부트나 스프링 프레임워크에서는 Jakarta EE 9 를 지원하지 않는다고 합니다. 자세한 에러 설명은 아래 링크를 참고해주세요.

 

Tomcat 10.x throws java.lang.NoClassDefFoundError on javax.servlet.*

Deployed servlet based web application at context path [/VirtualStore], but context failed to start with below log. 19-Mar-2021 11:46:35.075 INFO [main] org.apache.catalina.startup.HostConfig.

stackoverflow.com

 

따라서 Tomcat 버전을 9 로 다운해주어야 합니다. Homebrew 에서 tomcat 을 검색하면 아래와 같이 9 버전을 확인할 수 있습니다. 

$ brew search tomcat

tomcat@9 확인

 

아래의 명령어를 입력하여 Tomcat 버전 9 를 설치하고 intelliJ 에서 버전 9 로 다시 설정해주면 구동이 잘 되는 것을 확인할 수 있습니다.

$ brew install tomcat@9

 

728x90