You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java编译报错:无法访问jakarta.persistence.Entity,类文件版本不匹配

问题解决:字节码版本不兼容导致的Jakarta Persistence访问错误

报错原因

这个错误的核心是字节码版本不匹配:

  • 52.0对应JDK 8的字节码版本,55.0对应JDK 11的字节码版本
  • 你当前项目用JDK 8编译,但引入的jakarta.persistence-api:3.1.0是基于JDK 11编译的,两者无法兼容

解决方案


1. 降低Jakarta Persistence API版本适配JDK 8

Jakarta Persistence 3.x系列开始要求JDK 11及以上,JDK 8需要使用2.x版本。修改pom.xml中的依赖:

<dependency>
    <groupId>jakarta.persistence</groupId>
    <artifactId>jakarta.persistence-api</artifactId>
    <version>2.2.3</version> <!-- 适配JDK8的稳定版本 -->
</dependency>

如果用Spring Boot框架,注意Spring Boot 2.x才对应Jakarta Persistence 2.x,Spring Boot 3.x才支持3.x版本

2. 升级项目JDK版本到11+

如果不想改动依赖版本,直接把项目编译环境换成JDK 11:
修改pom.xml的Maven编译插件配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
    </plugins>
</build>

同时要把IDE的项目JDK配置同步改成11。

3. 排查依赖树解决版本冲突

就算是从同版本项目复制的pom.xml,也可能存在间接依赖引入高版本API的情况。执行Maven命令查看依赖树:

mvn dependency:tree -Dincludes=jakarta.persistence:jakarta.persistence-api

如果发现其他依赖间接引入了3.1.0版本,就在你的依赖中添加排除规则,或者强制指定兼容版本。

内容的提问来源于stack exchange,提问作者Benjamin Roshan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:05:14