Java EE 项目:The requested resource [/<application-context>/hello-servlet] is not available

由于Tomcat9.0.x支持ServletSpec4.0,而JakartaEE9.1需要ServletSpec5.0,导致使用@WebServlet注解注册的Servlet不可用。解决方法是将项目配置为使用Tomcat9.0.x和JavaEE8。遗留问题是了解ServletSpec5.0与4.0的区别及其影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

使用Intellij Idea创建一个Jakarta EE(Java EE)项目的时候发现连 HelloServlet 都没法访问

原因

Tomcat 版本问题。
在使用 Intellij Idea 进行Jakarta EE项目创建的时候,选择Application Server 为 Tomcat 9.0.x,但是下一步使用了默认的Java EE版本为 Jakarta EE 9.1。
Apache Tomcat VersionsTomcat版本列表中可看到 Tomcat 9.0.x 对应的 Servlet Spec 为 4.0,而Jakarta EE 9.1 的 Servlet Spec 为 5.0。

解决方案

选择 Tomcat 9.0.x 与 Java EE 8进行项目的创建。

遗留问题

Servlet Spec 5.0 与 4.0 有什么区别,为什么会导致使用注解注册的Servlet不可用?

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
	...
}

其他症状

可以在 pom.xml 中的 dependencies 发现使用的 servlet-api 版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值