Tomcat 10中Servlet无法正常使用的解决办法
问题描述
在一个java EE
项目中,部署了Tomcat 10
版本的服务器,在运行过程中发现webapp
里面的项目都可以正常跑起来,但是写的servlet
文件全都没反应,经过反复检查,确认代码是没有问题的。
原因分析
查了资料才知道原来在Tomcat 10
中把包名从以往版本的javax
改成了jakarta
,而maven
导包的时候依旧使用原来的javax
,导致Tomcat 10
服务器的Servlet
接口和我写的servlet
文件不匹配,从而无法正常运行。
此时的依赖包
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
解决方案
– 方案一
将Tomcat 10
换成更早的版本,简单又省事
– 方案二
在maven
中导入Tomcat 10
对应的jakarta.servlet-api
打开项目中的pom.xml
文件,找到<dependencies>
内的javax.servlet-api
,将其注释或删除
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
然后添加一个新的jakarta.servlet-api
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>4.0.4</version>
<scope>provided</scope>
</dependency>
再点击Load Maven Changes
更新maven
重新导入后的依赖包
这样就可以在Tomcat 10
中正常使用Servlet-api了。