Maven构建报cannot access org.hibernate.Session编译错误如何解决
问题根因
Java class文件版本号与编译所用JDK版本强绑定,报错中出现的版本号对应关系如下:
- 52.0:JDK 8 编译生成的字节码版本
- 55.0:JDK 11 编译生成的字节码版本
该报错与类路径子目录配置无关,本质是项目当前编译所用JDK版本为1.8,但引入的hibernate-core-6.1.1.Final依赖由JDK11编译生成,低版本JDK无法加载高版本JDK编译出的class文件。Hibernate 6.x系列最低运行环境要求为JDK11,自该大版本起不再兼容JDK8,属于典型的依赖与环境版本不匹配问题。
解决步骤
根据目标使用的JDK版本,二选一调整配置即可:
方案1:保留JDK8编译环境
- 修改pom.xml内hibernate-core依赖版本,替换为兼容JDK8的最后一个稳定大版本5.6.x系列,示例依赖配置:
<dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> </dependency>
- 删除本地Maven仓库下
C:\Users\Sreenivasulu.P\.m2\repository\org\hibernate\orm\hibernate-core\6.1.1.Final整个目录,清除错误版本的缓存包 - 在项目根目录执行命令
mvn clean install -U,强制拉取正确版本的依赖 - Eclipse环境下右键项目,选择
Maven -> Update Project,勾选Force Update of Snapshots/Releases刷新IDE类路径缓存即可
方案2:保留hibernate-core 6.1.1.Final版本
- 将本地安装的JDK升级至11及以上版本
- 统一两处编译配置版本:
- Eclipse中项目的Java构建路径、编译器合规级别全部设置为JDK11及以上
- pom.xml内maven-compiler-plugin插件的source、target配置值改为11及以上,示例配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin>
- 执行
mvn clean compile验证编译是否正常,存在缓存时同样执行Maven Update刷新项目配置
额外排查项
- 执行
mvn dependency:tree查看全量依赖树,检查是否存在其他第三方依赖间接传递引入6.x版本hibernate-core的情况,若存在则用<exclusion>标签排除错误的传递依赖 - 确认Eclipse全局配置的Installed JREs中,选中的默认JRE为目标版本JDK,避免IDE误用其他版本的编译环境
内容的提问来源于stack exchange,提问作者vasu
相关产品推荐
相关产品推荐

