JPA

eclipse querydsl세팅시 Qclass를 찾지 못하는 경우 Qclass no class def found error

기기디 2021. 3. 11. 18:49

프로젝트에서 기존에 JPA를 사용하고 있었지만, spring data jpa에서 제공하는 query method와 JPQL로 사용하고 있었다.

 

새로운 기능을 추가하며 querydsl을 사용하게 되었고 세팅과정에서 겪은 어려움을 공유하고자 한다.

 

내가 겪은 문제는

  • Q도메인 생성에 문제 없음
  • 소스상에서도 정상적으로 Qclass import시 문제없음
  • build / jar파일 생성시에도 문제없음

하지만 포스트맨으로 api call하면 Qclass를 찾지 못하는 문제가 있었다.

 

쿼리타입을 사용하여 불러올때

 

QMember qMember = new QMember("m");

QMember qMember = QMember.member;

 

와 같이 선언한 부분에서 no class def found error를 내뱉으며 문제가 됐다.

 

처음에는 gradle세팅의 문제로 판단하고 annotationProcessor설정을 해보기도 하고 ewerk 플러그인구성을 빼고 buildScript로 구성을 하고 이것저것 시도해봤지만 결국에는 eclipse에서 configure build path의 설정으로 해결하였다

 

해결방안에 대해서 간략하게 적자면

 

프로젝트 우클릭 -> build path -> configure buildpath 설정으로 들어가 soruce탭을 클릭하면 현재프로젝트의 buildPath가 잡혀있는데

 

여기서 Q class가 생성된 경로의 폴더를 add Folder버튼을 이용하여 추가해주고

만약 Output folder설정이 잡혀있다면 Qclass폴더를 기존 자바 소스의 폴더경로와 통일시켜주면 된다.

 

 

사족)

나 같은 경우 Q도메인 생성 폴더를 target/generated-soruces로 잡아놨는데 이 폴더만 Output folder

해결하고보니 괜한걸로 시간낭비 많이 했구나 싶다...덕분에 gradle버전별 공부도 하고 querydsl자체에 대해서 공부도 하면서 도움도 많이 됐지만 문제해결할때 조금 더 차분하게 천천히 살펴보는 습관을 가져야겠음. 훨씬 더 빨리 해결 할 수 있었는데 괜한시간 많이 쓴 것 같음.