Spring MVC 6.0.3项目启动报错:jakarta.servlet.http.HttpServlet类找不到
Spring MVC 6.0.3 启动报错:
ClassNotFoundException: jakarta.servlet.http.HttpServlet 排查方案 核心原因
Spring MVC 6.0.x 基于**Jakarta EE 9+**规范开发,Servlet API的包名已从旧的javax.servlet彻底改为jakarta.servlet。若你使用的Tomcat版本低于10.0,它仅支持旧版javax.servlet API,自然找不到jakarta.servlet.http.HttpServlet类,这是导致报错的根本原因。
具体解决步骤
1. 升级Tomcat至10.0及以上版本
必须使用适配Jakarta EE 9+的Tomcat版本(推荐Tomcat 10.1.x,兼容Jakarta EE 10):
- 打开Eclipse的
Window > Preferences > Server > Runtime Environments - 删除原有的Tomcat 9及以下版本配置
- 点击
Add,选择Apache Tomcat v10.x,指向本地Tomcat 10.x的安装目录,完成配置
2. 修正pom.xml依赖配置
确保依赖适配Jakarta规范,且Servlet API设置为provided(由Tomcat提供,无需打包进项目):
<dependencies> <!-- Spring MVC 6.0.3 核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.0.3</version> </dependency> <!-- Jakarta Servlet API 适配Spring 6 --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> <!-- JUnit 5 测试依赖(可选) --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> </dependencies>
3. 验证项目部署配置
- 右键项目 >
Properties > Targeted Runtimes,勾选已配置的Tomcat 10.x版本 - 清理并重新部署:右键服务器 >
Clean,再右键项目 >Run As > Run on Server,选择Tomcat 10.x
4. 检查web.xml配置(可选,推荐迁移至Java配置)
若仍使用web.xml,确保DispatcherServlet的类路径正确(Spring MVC 6的DispatcherServlet已适配Jakarta):
<servlet> <servlet-name>dispatcherservlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
注:Spring 6推荐使用Java配置替代web.xml,比如实现WebApplicationInitializer接口,避免XML配置的兼容性问题。
内容的提问来源于stack exchange,提问作者ayush
相关产品推荐
相关产品推荐

