Spring boot - Major Version 업데이트 JPA QueryDsl 문제 해결 (2.7.3 > 3.1.3)

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 패키지에 대응할 수 있도록 만들어져 있습니다.

{"originWidth":1764,"originHeight":1054,"style":"alignCenter","caption":"Java EE 용어

 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로 수정해야 합니다.

반응형

댓글

Designed by JB FACTORY