본문 바로가기
카테고리 없음

[Java] 'package javax.persistence does not exist' 오류 해결방법 3가지 알아보기

by hongreat 2024. 8. 12.

JPA와 Gradle 스택으로 프로젝트를 구성하기 위해 IDE와 환경을 세팅하던 중, 로컬환경에서 'package javax.persistence does not exist'라는 오류를 접할 수 있습니다.

 

(Full error msg는 → error: package javax.persistence does not exist import javax.persistence.Entity)

 

많은 블로그 글을 찾아보면서 그럴듯(?)한 해결책의 늪에 계속해서 빠져있을 때쯤, 결국 스택오버플로우의 해결방법을 통해 해결한 내용을 간단하게 정리합니다.

 

 

이 오류는 주로 Java Persistence API(JPA)가 프로젝트에 제대로 설정되지 않았을 때 발생합니다.

이번 포스트에서는 이 오류를 해결하기 위해 시도했던 방법을 단계별로 기록합니다.

목차

     

     

     

     

    1. Jakarta Persistence로 전환

     

    이 방법은 가장 마지막에 시도했던 방법이자 성공한 방법 입니다.

    https://stackoverflow.com/questions/77257576/springboot-package-javax-persistence-does-not-exist

    Spring Boot 3.0 이상을 사용하는 경우, Java EE API가 Jakarta EE로 전환되었습니다.

     

    따라서

    javax.persistence
    

    대신

    jakarta.persistence
    

    를 사용해야 합니다.

     

     

    javaimport jakarta.persistence.Entity;
    
    import jakarta.persistence.GeneratedValue;
    import jakarta.persistence.GenerationType;
    import jakarta.persistence.Id;
    

     

     

    Oracle이 Java 상표권을 보유하고 있기 때문에, Jakarta EE에서는 네임스페이스가 **javax.***에서 **jakarta.***로 변경됨과 동시에 패키지명도 변경된 것 입니다.

     

     

    이렇게 변경된 이유는 Java EE의 한계를 극복하고, Jakarta EE가 현대적인 엔터프라이즈 애플리케이션 개발을 위한 플랫폼으로 자리 잡기 위한 것이라고 하는데, Java 진영의 역사를 잘 모르니 궁금하신 분들은 아래를 링크를 통해서 더 자세한 내용을 보시면 좋겠습니다.

    https://www.samsungsds.com/kr/insights/java_jakarta.html

    2. JPA 의존성 추가하기

     

     

    Java 프로젝트에서 JPA를 사용하려면 JPA 라이브러리를 의존성으로 추가해야 합니다.

    의존성이 추가되지 않아 실제로 찾지 못해서 에러가 되는 경우도 더러 있는 것 같습니다.

    build.gradle 파일에 다음과 같은 의존성을 추가해야합니다.

    파일은 보통 {프로젝트 루트경로}/build.gradle 경로에 있습니다.

    groovyimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'

    이 의존성은 JPA 구현체인 Hibernate를 포함해서

    javax.persistence
    

    패키지를 제공합니다.

    3. IDE 동기화 문제

     

     

    1번에서 Jakarta Persistence로 전환 과 의존성을 추가 했음에도 불구하고 오류가 지속된다면, IDE에서 의존성이 제대로 로드되지 않았을 수 있습니다. 시스템환경이 캐싱되는 개념과 같습니다.

     

    IntelliJ IDEA와 같은 IDE에서는 다음과 같은 방법으로 문제를 해결할 수 있습니다.

     

    (실제로 Pycharm 의 경우도 마찬가지로 리로드 해주는 것 만으로도 대부분 오류가 해결되긴 했습니다;;)

    • Gradle 프로젝트 동기화File 메뉴에서 **Sync Project with Gradle Files**를 선택하거나 Reload All Gradle Projects 버튼을 클릭합니다.
    • 캐시 무효화 및 재시작File > **Invalidate Caches / Restart...**를 선택하여 캐시를 무효화하고 IDE를 재시작합니다.

     

    결론

    • Jakarta Persistence로의 전환 시도
    • 의존성 해결
    • IDE 재시작
        • 그래도 안되면 재부팅!