Spring Boot项目启动报错:无法访问JavaXMember.getJavaType()方法
问题解决:Spring Boot启动时Hibernate IllegalAccessError异常
异常原因
这个错误是因为com.vladmihalcea.hibernate.type.json.internal.JsonTypeDescriptor类尝试调用org.hibernate.annotations.common.reflection.java.JavaXMember.getJavaType()方法,但该方法的访问权限不允许外部类调用。本质是hibernate-types依赖版本与hibernate-commons-annotations版本不兼容:你使用的hibernate-types-52:2.19.2版本,对hibernate-commons-annotations的方法要求和当前使用的5.0.1.Final版本不匹配,导致方法访问权限冲突。
解决方案
1. 调整hibernate-types版本到兼容版本
Hibernate 5.2.12.Final对应的hibernate-types-52应该用更低的版本(比如2.10.0),这个版本和hibernate-commons-annotations 5.0.1.Final兼容性更好。修改pom.xml中的依赖:
<dependency> <groupId>com.vladmihalcea</groupId> <artifactId>hibernate-types-52</artifactId> <version>2.10.0</version> </dependency>
2. 清理Maven缓存并重新构建
可能本地Maven仓库的依赖文件损坏,执行以下命令强制更新依赖并清理缓存:
mvn clean install -U
3. 检查并排除冲突的间接依赖
如果有其他依赖间接引入了更高版本的hibernate-commons-annotations,需要排除掉。先用mvn dependency:tree查看依赖树,找到冲突的依赖后,添加排除规则:
<dependency> <!-- 替换为实际冲突的依赖坐标 --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <exclusions> <exclusion> <groupId>org.hibernate.common</groupId> <artifactId>hibernate-commons-annotations</artifactId> </exclusion> </exclusions> </dependency>
验证修改
修改完成后,执行mvn dependency:list确认依赖版本正确,然后重新启动项目即可。
内容的提问来源于stack exchange,提问作者not a Programmer
相关产品推荐
相关产品推荐

