현상
사내에서 새로운 API 제작을 위해 querydsl을 적용하였으나 Q 클래스를 찾지 못하는 에러가 발생하였다.
정확히는 Unable to load class 'com.mysema.codegen.model.Type' 에러였다.
원인
https://www.inflearn.com/questions/355723
compileQuerydsl 오류 - 인프런 | 질문 & 답변
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼
www.inflearn.com
구글링을 통해 해당 링크를 찾아서 해결법을 적용하였다. gradle의 querydsl 관련 설정 누락이 원인인듯 하다.
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
해당 설정을 적용하였으나 여전히 관련 에러가 났다. 그래서 querydslDir의 경로를 확인해보니 아예 Q 클래스들을 만들지 못하는 것을 발견했다.
그래서 도대체 뭐가 원인일까 싶어 querydsl, spring boot 버전을 확인해보니 여기에 문제가 있었다.
해결
https://wangtak.tistory.com/m/44
스프링 부트 2.6 이상, Querydsl 5.0 Unable to load class 'com.mysema.codegen.model.Type' 에러 해결하기
최근에 한 기업의 과제를 진행하였는데, 주제만 정해주고 기술 스택은 자유였습니다. 그래서 start.spring.io를 통해 최신 버전의 스프링 부트(버전 2.6 이상) 프로젝트를 만들었고, 프로젝트에 Spring
wangtak.tistory.com
해당 링크를 확인해본 결과 스프링부트 2.6이상, Querydsl 5.0 에서는 설정 방식에 차이가 있었다.
내가 진행했던 프로젝트는 스프링부트 2.6 이상이라 querydsl 5.0 이상을 적용해야했다.
dependencies {
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}"
}
위와 같이 querydsl만 추가하는것이 아니라 apt 또한 추가해야했다.
추가한 뒤에는 아무런 문제없이 빌드 완료되었다.
'프로그래밍 > 오류보고' 카테고리의 다른 글
[JUnit] DataJpaTest 중 dataSource 관련 에러 (0) | 2022.09.28 |
---|---|
[JUnit] @BeforeAll 사용시 에러 (0) | 2022.06.30 |
[Spring]Intellij에서 스프링 devtools이 작동하지 않는다면 (0) | 2022.06.14 |