先准备好了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>
Original: https://www.cnblogs.com/allworldg/p/15898944.html
Author: allworldg
Title: Servlet版本冲突导致页面404
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583400/
转载文章受原作者版权保护。转载请注明原作者出处!