나의보물들/JPA

[JPA] 트러블 슈팅 : build.gradle 설정 오류

솔솔하네 2024. 8. 10. 10:49
반응형

💥 트러블 슈팅


 

기존에 JPA 설정은 되어있었고 추가로 하이버네이트 추가해서 builde.gralde 설정을 하는데 오류가 발생함

 

💥 트러블 1


build.gralde

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.3.2'
	id 'io.spring.dependency-management' version '1.1.6'
}

sourceCompatibility = '17'

 ... 생략
 
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.hibernate.orm:hibernate-core:5.4.0.Final'
  ....생략
}

 

오류 내용

Execution failed for task ':compileJava'. > Could not resolve all files for configuration ':compileClasspath'. > Could not find org.hibernate.orm:hibernate-core:5.4.0.Final.

 

오류 원인

해당 버전의 라이브러리를 찾을 수 없어서 발생한 문제

 

오류 해결 방법

Gradle의 자동화된 빌드 시스템에서 다운받을 수 없는거면 쓰지말라고 없는게 아닐까 하고 생각...그러면 굳이 찾아서 쓰지말고 업그레이드 버전 찾아서 사용하는게 나을듯 판단

 

💥 트러블 2 (하이버네이트 버전 명시 안함 - 자동으로 상위 버전 받을려고)


build.gralde

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.3.2'
	id 'io.spring.dependency-management' version '1.1.6'
}

sourceCompatibility = '17'

 ... 생략
 
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.hibernate.orm:hibernate-core'
  ....생략
}

 

오류 내용

Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Class org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider does not implement the requested interface jakarta.persistence.spi.PersistenceProvider

 

오류 원인 

이 오류는 SpringHibernateJpaPersistenceProvider 클래스가 jakarta.persistence.spi.PersistenceProvider 인터페이스를 구현하지 않아서 발생함. 이 문제는 보통 프로젝트에서 사용 중인 JPA와 Hibernate 라이브러리 간의 버전 불일치로 인해 발생함. 특히, JPA 3.0 이상을 사용하는 경우 Jakarta EE와 관련된 패키지 네임스페이스(javax.persistence -> jakarta.persistence)의 변경 때문에 발생할 수 있음.

 

오류 해결 방법

 - 우선 버전 명시안하고 어떤 버전이 받아 졌는지 확인함(6.5.2 버전 받아짐)

 

=> 호환되는 다른 버전 찾기

 

🌟 해결 방법


implementation 'org.hibernate.orm:hibernate-core:6.2.8.Final'

 

해당 버전으로 해결!!