기존에 쓰던 프로젝트의 자바와 스프링 버전을 올리려고 하는데
뭐.. 잡다한 에러들이 굉장히 많이 나오네요.
결론적으로 이클립스에서 설정만 바꾸면 에러가 없어지는줄 알았습니다.
그러나..톰캣 버전까지 맞지않아 엄청 고생하고 있습니다.
(에러 하나 잡으면.. 또다른 에러가 ㅠㅠ)
프로젝트를 진행하며 이런 이슈사항들을 기재해 둡니다.
(제가 참고할 용도로 적어두는거에요.)
✅ jakarta.servlet.http.HttpServlet 오류 및 Dynamic Web Module 5.0 설정 가이드
📌 1. 오류 메시지 개요
jakarta.servlet.http:HttpServlet
dynamic web module facet version 5.0 was not found이 오류는 Jakarta Servlet 5.0 기반 프로젝트에서 Eclipse의 Web Module 설정이 불일치하거나, Servlet API 의존성 문제, 또는 톰캣 버전 호환성 문제 등에서 발생합니다.
📂 2. 해결 방법 정리
🔹 A. Dynamic Web Module 5.0 설정
➤ 방법 1: Eclipse Facet 설정 (UI)
- 프로젝트 우클릭 →
Properties - 좌측에서
Project Facets클릭 Dynamic Web Module을 5.0으로 변경- 안 보인다면
Convert to faceted form클릭 Apply and Close
➤ 방법 2: .settings/org.eclipse.wst.common.project.facet.core.xml 수정
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<fixed facet="java"/>
<fixed facet="jst.web"/>
<installed facet="java" version="17"/>
<installed facet="jst.web" version="5.0"/>
</faceted-project>
🔹 B. Jakarta Servlet 5.0 의존성 추가
➤ Maven 사용 시
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
➤ 수동 JAR 추가 시
jakarta.servlet-api-5.0.0.jar다운로드 후:WEB-INF/lib폴더에 추가 또는- Eclipse → Build Path → Add External JARs
🔹 C. 톰캣 버전 확인
| Jakarta Servlet 버전 | 톰캣 버전 필요 |
|---|---|
| Servlet 4.0 (javax) | Tomcat 9.x |
| Servlet 5.0 (jakarta) | Tomcat 10.x 이상 |
⚠
jakarta.servlet은 Tomcat 10+ 전용입니다. Tomcat 9 이하에서는 작동하지 않습니다.
🔹 D. Eclipse 업데이트 (Web Tools Platform)
Help > Install New Software- URL:
https://download.eclipse.org/releases/latest - 설치 항목:
Web, XML, Java EE and OSGi Enterprise DevelopmentEclipse Web Developer Tools
- 재시작 후 Facet에 5.0 추가 가능 여부 확인
🔧 기타 설정 파일 예시
📄 .project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MyServletProject</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures>
</projectDescription>
📄 .classpath
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
'개발 > java,spring' 카테고리의 다른 글
| Java Exception 구조 이해하기: try-catch만 알면 부족한 이유 (0) | 2026.03.24 |
|---|---|
| REST API 설계 기본 원칙 정리 (백엔드 개발자를 위한 가이드) (0) | 2026.03.19 |
| springframework.web.filter.CharacterEncodingFiler cannot be cast to class jakarta.servlet.Filter (0) | 2025.07.20 |
| [자바 에러] java.lang.NoSuchMethodError, ByteBuffer.limit(I)Ljava (0) | 2025.07.07 |
| [Java 컴파일 경고] 세부사항을 보려면 -Xlint:unchecked (1) | 2025.07.03 |
| [java] xml 파싱 dtd 경로를 읽어 에러가 나는 경우 무시하기. (1) | 2024.08.30 |
| 외부 라이브러리 자바(java) jar 파일 생성 및 실행(vendorName == null!) 에러 해결 (0) | 2020.05.07 |