Tomcat 10.0.27与IntelliJ 2022.2.2新建Java项目遇HTTP 404问题
问题分析与解决办法
核心原因
Tomcat 10.0.x是Jakarta EE 9/9.1规范的实现,它彻底切换到了jakarta.*命名空间,完全不支持Java EE 8使用的javax.*命名空间。你选Java EE 8生成的项目,Servlet类依赖的是javax.servlet.*包,Tomcat 10识别不了这些类,自然找不到对应的资源,返回404错误。
可行解决方案
方案1:换用兼容的Tomcat版本
如果必须在Java EE 8环境下工作,直接把应用服务器换成Tomcat 9.x——Tomcat 9是专门适配Java EE 8的容器,支持javax.*命名空间,和你的项目依赖完全匹配,不用改任何代码就能正常运行。
方案2:手动适配Tomcat 10(不推荐)
要是非得保留Tomcat 10,就得手动调整项目的依赖和代码:
- 修改Maven的
pom.xml,把javax.servlet相关依赖换成jakarta.servlet的桥接包,比如:<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>4.0.4</version> <scope>provided</scope> </dependency> - 把代码里所有
import javax.servlet.*的语句,全换成import jakarta.servlet.* - 重新构建并部署项目
补充说明
这不是IntelliJ或者Tomcat的Bug,是版本兼容问题:IntelliJ只是按你选的Java EE 8规范生成了对应命名空间的代码,而Tomcat 10的版本特性决定了它只认jakarta.*的类。你切换到Jakarta EE 9能正常运行,就是因为Jakarta EE 9用的是jakarta.*命名空间,和Tomcat 10完全匹配。
内容的提问来源于stack exchange,提问作者Narj
相关产品推荐
相关产品推荐

