implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")
kapt("com.querydsl:querydsl-apt:5.0.0:jakarta")
javax.* >> jakarta.*
이번에 스프링 부트 버전을 2.x.x 에서 3.x.x으로 업데이트하면서 JPA QueryDSL 관련 문제가 발생했습니다. 주요 빌드 에러 메시지는 다음과 같았습니다.
error: cannot inherit from final XXX
error: incompatible types: NonExistentClass cannot be converted to Annotation
@error.NonExistentClass
JPA와 연관된 도메인에서 위와 같은 에러메시지가 출렸되었는데, 이런 메시지가 나오는 이유는 스프링 버전 업데이트 되면서 자바 API 패키지명이 바뀌었기 때문입니다. 만약 JPA QueryDSL를 사용하지 않았다면 큰 이슈 없이 버전업이 가능했을지도? 자바 패키지명이 바뀐 이유는 이 링크를 참조해 보시면 좋을 것 같아요.
문제 해결 방법
스프링 부트 버전을 2.x.x 에서 3.x.x로 업데이트하는 과정에서 위와 같은 문제를 만났다면, 해결하는 방법은 다음과 같습니다.
import javax.* >> import jakarta.*
먼저 javax 패키지를 import 해서 사용하는 내용을 jakarta 패키지를 import 해서 사용하게 변경해 주세요. jakarata 패키지는 javax 패키지에 대응할 수 있도록 만들어져 있습니다.
import 패키지명을 javax에서 jakarta로 변경했다면, 프로젝트 설정을 수정할 차례입니다.
implementation("com.querydsl:querydsl-jpa:5.0.0")
kapt("com.querydsl:querydsl-apt:5.0.0:jpa")
querydsl-jpa 라이브러리 뒤에는 jakarta를 추가하고, querydsl-apt 라이브러리는 jpa를 jakarta로 변경해 주세요.
implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")
kapt("com.querydsl:querydsl-apt:5.0.0:jakarta")
build.gradle 파일에서 noArg, allOpen 설정에 javax를 사용하고 있는 부분이 있다면 이 부분도 jakarta로 수정해야 합니다.
반응형
'프로그래밍 > 스프링' 카테고리의 다른 글
Spring Security - MySql Password()을PasswordEncoder로 구현하는 방법 (0) | 2022.02.18 |
---|---|
Spring Boot - 스프링 부트 Whitelabel 에러 처리 방법 (0) | 2021.10.26 |
Spring - 실무에서 사용하는 React + SpringBoot 프로젝트 만들기 with Gradle (4) | 2021.09.01 |
Spring boot - vuejs를 사용하는 스프링 부트 프로젝트 만들기 (0) | 2021.08.25 |
Spring error - Failed to configure a DataSource 에러 원인과 해결 방법 (0) | 2021.08.18 |