升级Java17与Tomcat10.1后REST API出现404及类找不到异常
升级Java 17和Tomcat 10.1后REST API调用报错的解决方法
问题原因
这个错误的核心是Tomcat 10.1基于Jakarta EE 9+规范,该规范已将所有javax.servlet相关API包迁移至jakarta.servlet命名空间,而你的项目仍在引用旧的javax.servlet.Filter类,导致类加载失败。Servlet初始化失败后,后续所有请求自然返回404。
解决步骤
- 替换项目依赖:将所有
javax.servlet相关依赖(如servlet-api、jsp-api等)替换为Jakarta版本。以Maven为例:<!-- 移除旧的javax.servlet依赖 --> <!-- <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> --> <!-- 引入Jakarta版本依赖 --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> - 修改代码导入语句:将所有代码中的
import javax.servlet.*、import javax.servlet.http.*等,替换为import jakarta.servlet.*、import jakarta.servlet.http.*。 - 检查配置文件:若项目使用
web.xml,确保其中过滤器、Servlet的类路径已更新;优先推荐使用注解式配置替代传统XML配置。 - 清理重构项目:删除旧编译文件(如target目录),重新编译打包,确保所有依赖和代码完成命名空间切换。
内容的提问来源于stack exchange,提问作者rajeev tejapuriya
相关产品推荐
相关产品推荐

