Servlet版本冲突导致页面404
先准备好了Tomcat环境以及用Idea打了一个Servlet war包想看看效果,结果发现页面跳转一直报404错误,检查了跳转url,项目结构等情况后,问题依旧没有解决。最后偶然在网上看到了相关信息后终于找到问题原因。
原因
一直没有关注Java EE相关更新新闻,查询后才明白Servlet5.0已经将包命名空间从javax
变成了jakarta
,这就导致如果Tomcat里Servlex版本如果是最新版,而本地编译环境是早期版本,那么Tomcat解war包后程序无法正确通过import
找到相关jar包。
解决方法
-
首先检查Servlet版本是否相同。
-
本地编译依赖环境可以直接打开pom.xml查看为4.0。
-
Tomcat则需要先解压以下文件
${baseDir}\apache-tomcat-10.0.16\lib\servlet-api.jar
,然后查看META-INF
文件夹下的MANIFEST.MF
,可以看出版本为5.0。
-
修改pom.xml的Servlet依赖,改成5.0即可。
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>5.0.0</version> <scope>provided</scope> </dependency>
-