나의보물들/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'
해당 버전으로 해결!!