개발/java,spring

dynamic web module facet version 5.0 was not found

Mr.Lee 하루 2025. 7. 17. 08:27

기존에 쓰던 프로젝트의 자바와 스프링 버전을 올리려고 하는데
뭐.. 잡다한 에러들이 굉장히 많이 나오네요.


결론적으로 이클립스에서 설정만 바꾸면 에러가 없어지는줄 알았습니다.
그러나..톰캣 버전까지 맞지않아 엄청 고생하고 있습니다.
(에러 하나 잡으면.. 또다른 에러가 ㅠㅠ)


프로젝트를 진행하며 이런 이슈사항들을 기재해 둡니다.
(제가 참고할 용도로 적어두는거에요.)



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)

  1. 프로젝트 우클릭 → Properties
  2. 좌측에서 Project Facets 클릭
  3. Dynamic Web Module5.0으로 변경
  4. 안 보인다면 Convert to faceted form 클릭
  5. 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.servletTomcat 10+ 전용입니다. Tomcat 9 이하에서는 작동하지 않습니다.


🔹 D. Eclipse 업데이트 (Web Tools Platform)

  1. Help > Install New Software
  2. URL: https://download.eclipse.org/releases/latest
  3. 설치 항목:
    • Web, XML, Java EE and OSGi Enterprise Development
    • Eclipse Web Developer Tools
  4. 재시작 후 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>