[Eclipse]_Spring 최신 버전 servlet 오류(feat.jakarta error)

2022. 12. 9. 14:52[Spring]_/[Eclipse]

728x90
반응형

개요

Intellij를 사용하다가 다음 프로젝트가 Eclipse 만 사용가능하다 하여 환경 구현 실습

 

연습을 위해 가장 최신버전 채택하여 진행중 만난 오류사항 및 해결방법 설명

환경 

Eclipse 최신버전 2022-09 (4.25.0)

maven Artifact ID : maven-archetype-webapp 1.4v

 

Spring -webmvc : 6.0.2 version

 

https://yn971106.tistory.com/160

 

[Eclipse]_eclipse maven-web 프로젝트 생성 (feat.tomcat)

개요 Intellij를 사용하다가 다음 프로젝트가 Eclipse 만 사용가능하다 하여 새로 프로젝트 생성 도중 만난 에러사항 해결 방법 및 설치방법 설명 환경 Eclipse 최신버전 2022-09 (4.25.0) Tomcat - 9.0.62 v maven

yn971106.tistory.com

상위 포스팅에서 tomcat 버전 - 9.0.62 v 을 사용하였으나 

spring-mvc 6.0.2 버전 사용시 javax.servlet 버전 문제로 인해 tomcat 을 10v 이상 사용하였음


문제상황

Spring 6.0.2 v 사용시

Tomcat 10 미만의 버전으로 Spring 6.0.2 구동시 다음과 같은 에러코드 발생

 

Caused by: java.lang.ClassNotFoundException: jakarta.servlet.ServletInputStream


문제 원인

javax.servlet -> jakarta.servlet 으로 이전하였고

 

Jakarta Servlet 의 경우 Tomcat version을 10을 요구하여 톰캣을 10v 으로 업그레이드 해야함


해결방법

 

Tomcat v 10 이상 설치 후 적용

 


설명

1. tomcat 10v 설치

 

window -> Preferences -> server  검색

톰캣 10버전 없을 경우 add 버튼 클릭

ADD 버튼 클릭한뒤 tomcat 10 버전 선택

 

10버전 선택 후 Next

1. Tomcat 10v 를 미리 설치하였다면 Browse 선택하여 해당 경로에 위치시키고 finish 선택

2. 만약 없다면 Download and Install 선택하여 다운로드와 동시에 등록

이미 설치하였다면 1번 새로설치시 2번

2. 프로젝트에 새로 등록한 Tomcat 지정하기

프로젝트 -> 마우스 우클릭 -> Properties 선택 -> java Build Path -> Libraries 이동

그림은 이미 10버전이기 때문에 10이라고 떠있음

이미 등록된 tomcat 이 만약 다른 버전일 경우 Remove 이후 Add Library 선택

server runtime 선택
등록된 10버전 선택 후 finish

이후 적용 후 프로젝트 실행시 Spring 6.0.2 가 정상적으로 작동합니다.

 

감사합니다.

 

 

 


+@ 2022-12-19 추가 작성

 

tomcat 10 을 설치시 servlet 버전 도 이전 javax 가 아닌

jakarta servlet 을 사용해야 합니다.

 

tomcat 10 의 경우 jakarta servlet 이 내장되어 있습니다.

톰캣만 빌드해서 사용시 오류가 나지 않았으나,

 

maven build 시 jakarta 를 받아두지 않으면 오류가 납니다.

 

따라서 pom.xml 에 다음과같은 jakarta 를 설치합니다.

<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>

 

728x90
반응형