测试环境:
开发工具:IDEA
Server.服务器版本: Apache Tomcat/10.0.18
服务器构建: Mar 9 2022 14:30:15 UTC
服务器版本号: 10.0.18.0
操作系统名称: Windows 10
OS.版本: 10.0
架构: amd64
Java虚拟机版本: 17.0.1+12-LTS-39
问题描述
使用IDEA 编译成WAR文件,直接把WAR粘贴至 ${Tomcat HOME}/webapps/, 启动startup.bat
启动后访问提示404,日志里面也没有输出 《Spring》,仅有一条不太相关的错误,但这个错误也不会影响Springboot 启动啊,测试N种方法一直无果,期间换了 STS 开发工具重新打包测试依然不行,最后更换一下Tomcat 8.5版本,可以正常起动,那问题就出在 Tomcat 10 版本上。
org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。
于是,GG一番。 可能是因为Oracle 将 Java EE 的权利转让给 Eclipse 基金会。
Java EE 更名为 Jakarta EE (Eclipse 不能使用javax作为包前缀)
Servlet 5.0 API : javax.servlet 替换为 jakarta.servlet.
Server Pages 3.0 : javax.servlet.jsp 替换为 jakarta.servlet.jsp.
Expression Language 4.0 : javax.el 替换为 jakarta.el.
WebSocket 2.0: javax.websocket 替换为 jakarta.websocket.
有可能是因为包名更改,所以部署时需要迁移把,具体原因不在深究已经有10年没碰过java了,最近也是一时兴起,学习一下java springboot开发
解决方案:
只需要在${Tomcat 安装目录下}新建 webapps-javaee,把打包好的WAR文件放在此处,启动tomcat即可。tomcat自动将Java EE 迁移至 Jakarta EE
Apache Tomcat 10 Configuration Reference (10.0.18) - The Host Container