[Java] 配置 Tomcat 10.0.27 报错 "类具有错误的版本 55.0,应为52.0"

1,723 阅读1分钟

一、问题描述

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

image.png 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>

报错消失,正常运行:

image.png

四、拓展

1. Java 字节码版本

image.png