[spring boot] package javax.persistence does not exist

프헤이·2024년 1월 21일

오늘의 에러

목록 보기
3/6
post-thumbnail

클론 코딩인데 에러가 난다😶

Cannot resolve symbol 'persistence'
Cannot resolve symbol 'Table'
Cannot resolve symbol 'Entity'
Cannot resolve symbol 'Id'
Cannot resolve symbol 'GeneratedValue'
Cannot resolve symbol 'GenerationType'
Unused import statement

❓chatgpt에게 해결방법을 물어봤다.

  1. 의존성 문제: build.gradle 파일에 JPA 관련 의존성이 포함되어 있지만, 이 의존성이 정상적으로 로드되지 않았을 수 있습니다. org.springframework.boot:spring-boot-starter-data-jpa 스타터는 JPA 구현체(Hibernate)를 포함하고 있으며, 이는 javax.persistence 패키지를 제공합니다.

  2. IDE 동기화 문제: IntelliJ IDEA가 최신 의존성을 제대로 로드하지 못했을 수 있습니다. 프로젝트의 Gradle 설정을 다시 동기화해야 합니다.

이 문제를 해결하기 위해 다음 방법을 시도해 보세요:

  • Gradle 설정 다시 동기화: IntelliJ IDEA에서 Reload All Gradle Projects 버튼을 클릭하거나, File 메뉴에서 Sync Project with Gradle Files를 선택하여 프로젝트와 Gradle 설정을 다시 동기화하세요.

  • IDE 재시작 및 캐시 클리어: IntelliJ IDEA를 재시작하고, Invalidate Caches / Restart 옵션을 통해 캐시를 지우세요. 이는 IDE가 잘못된 정보를 캐싱하는 것을 해결하는 데 도움이 될 수 있습니다.

  • 의존성 확인: build.gradle 파일에서 org.springframework.boot:spring-boot-starter-data-jpa 의존성이 올바르게 포함되어 있는지 다시 한번 확인하세요.

  • IntelliJ IDEA 설정 확인: IntelliJ IDEA가 올바른 Gradle 설정을 사용하고 있는지 확인하세요. 특히, Gradle Wrapper를 사용하고 있는지 확인하고, 프로젝트 설정에서 올바른 JDK 버전이 설정되어 있는지 확인하세요.

🤔그대로 다 해봤는데도 에러가 해결될 기미가 안 보인다.

그러다 한 블로그에서 한 줄기의 빛을 보았다✨

import javax.persistence.EntityManager;

이 코드를 아래와 같이 바꿔야한단다.

import jakarta.persistence.EntityManager;

🆕왜냐하면, 다른 회사로 이관되며 자바 네임스페이스가 Jakarta로, API 패키지명은 javax. 에서 Jakarta. 로 변경되었다.

📖발췌글:
이클립스 재단으로 이관된 자바EE의 공식 명칭은 자카르타EE, 프로젝트 명은 EE4J(Eclipse Enterprise for Java)로 변경되었습니다. 자카르타EE는 기존 JCP 정책이 아닌 오픈소스 기반의 자카르타EE 사양 프로세스(Jakarta EE Specification Process, JESP)라는 개방적이고 중립적인 정책을 따릅니다. 오라클이 자바EE 프로젝트는 이관했지만 자바 상표권은 여전히 보유하고 있기 때문에 자바 네임스페이스 사용에 제약이 있었습니다. 이러한 이유로 자카르타EE에서는 자바 네임스페이스가 Jakarta로, API 패키지명은 javax. 에서 Jakarta. 로 변경되었습니다.

jakarta로 바꿨더니 바로 해결됐다😮

참고자료)
https://www.samsungsds.com/kr/insights/java_jakarta.html
https://jung2312.tistory.com/4

profile
개발의 체험현장

0개의 댓글