一、问题描述
Tomcat 10.0.24
Java 1.8
报错日志:
java: 无法访问jakarta.servlet.http.HttpServlet
错误的类文件: /{userpath}/.m2/repository/jakarta/servlet/jakarta.servlet-api/6.0.0/jakarta.servlet-api-6.0.0.jar!/jakarta/servlet/http/HttpServlet.class
类文件具有错误的版本 55.0, 应为 52.0
请删除该文件或确保该文件位于正确的类路径子目录中。
二、问题分析
因为 Tomcat 10.0.27 的类文件jakarta.servlet.http.HttpServlet的字节码版本是55.0(Java 11),而本机的 JVM 只支持52.0(Java 8)。
但 Tomcat 官网明确告知Tomcat 10.0.27支持到 Java 8 :
Apache Tomcat® - Which Version Do I Want?
三、解决方案
注意到报错的组件路径为jakarta.servlet-api-6.0.0.jar,更换 POM.xml 相关依赖的版本为5.0.0:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
报错消失,正常运行: