You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java Maven项目报错:java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet

问题排查与解决:Tomcat 10.1下Spring MVC项目出现ClassNotFoundException: javax.servlet.http.HttpServlet

核心原因

Tomcat 10.1 基于**Jakarta EE 9+**规范,API包路径从javax.servlet.*改为了jakarta.servlet.*,而当前使用的Spring版本(大概率是5.x及以下)依赖旧的javax.servlet API,导致类加载时找不到对应类。

解决方案

1. 升级Spring框架版本

使用适配Jakarta EE的Spring版本:

  • Spring MVC独立项目:升级到6.0.x及以上版本
  • Spring Boot项目:升级到3.0.x及以上版本

在pom.xml中更新Spring相关依赖示例:

<!-- Spring MVC 6.x 依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.1.5</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.1.5</version>
</dependency>

2. 替换Servlet API依赖

将旧的javax.servlet依赖替换为Jakarta版本,并设置scope为provided(Tomcat已内置该API,无需打包到项目):

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>

3. 清理并重新构建项目

执行Maven命令清理缓存并重新构建,确保依赖正确下载:

mvn clean install -U

4. 检查传统配置(若使用web.xml)

如果项目仍用web.xml,确认DispatcherServlet的类路径为org.springframework.web.servlet.DispatcherServlet(路径本身无问题,但需保证依赖适配)。


内容的提问来源于stack exchange,提问作者UTHAYAKUMAR M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:33:26