Spring Boot启动报错:类路径存在多个不兼容的javax.persistence.JoinTable版本
问题根因
该报错是JPA包版本冲突导致:类路径下存在两个javax.persistence.JoinTable类的实现,其中优先加载的是你项目lib目录下手动引入的低版本javax.persistence.jar,该包版本低于JPA 2.1,缺少Hibernate需要的indexes()方法,另一个则是spring-boot-starter-data-jpa依赖自带的兼容版本jakarta.persistence-api 2.2.3。
同时你的pom文件存在重复的JPA依赖声明,进一步加剧了依赖混乱。
解决步骤
- 第一步:删除pom重复依赖
移除pom.xml中如下多余的spring-data-jpa声明,spring-boot-starter-data-jpa已经内置了该依赖,无需单独引入:<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> </dependency> - 第二步:删除本地冲突的低版本JPA包
直接删除路径C:/Users/Usuario/IdeaProjects/spring-security/lib/下的javax.persistence.jar文件,之后打开IDEA的项目结构(File > Project Structure > Libraries),移除对这个旧JPA包的引用。 - 第三步:清理重建项目
执行Maven清理命令:mvn clean install,重启IDEA后重新加载所有Maven依赖,再启动项目即可解决冲突。
注:后续尽量不要手动往项目lib目录放入Spring、JPA这类公共依赖包,Spring Boot官方的starter已经默认管理了所有兼容的依赖版本,手动引入极容易出现版本冲突问题。
内容的提问来源于stack exchange,提问作者Kresnik
相关产品推荐
相关产品推荐

