본문 바로가기
곰돌이 푸도 울고 갈 꿀팁

어플리케이션 실행 시 Task가 표시되는 현상 / QueryDsl Q클래스 에러

by 성건희 2020. 2. 8.
반응형
쿼리디에스엘

인텔리제이에서 JPA의 QueryDSL을 적용하고 애플리케이션을 실행하는 과정에서
정말 짜증 나는 현상이 반복되어 며칠을 삽질을 하다가 결국 방법을 찾아 공유해 보려고 한다.

 

여러분들이 다음과 같은 문제에 직면하고 있다면 도움이 될 수 있겠다.

 

문제1

gradle

  • Task 정보가 뜨는 현상
  • 이것이 뜨기 시작하면서 한글이 깨지는 현상

 

문제2

심볼없음

  • 컴파일 에러는 안나는데 런타임 시 QueryDSL의 Q클래스를 찾을 수 없는 현상

 

하나씩 해결해 보자

 

문제 1 의 해결법

자세히 보면 Run 오른쪽 실행 이미지가 코끼리(Gradle)로 되어있다.

이건 Gradle 환경으로 프로그램을 실행한다는 것인데, 그렇기 때문에 Task의 정보도 표시되는 것이다.

이것을 해결하려면 인텔리제이환경으로 바꿔야 한다.

 

File - Settings - Build, Execution, Deployment - Build Tools - Gradle 로 들어가서

설정변경

다음과 같이 Build and run usingRun tests usingIntelliJ IDEA로 바꿔준다.

적용을 한 후 실행하면, 다음과 같이 인텔리제이로 실행이 되면서 Task 표시도 안되고 한글이 깨지는 현상도 사라진다.

 

정상적

 

문제 2 의 해결법

나는 QueryDSL의 Q클래스가 생성되는 위치를 다음과 같이 별도의 패키지를 만들어서 지정해 두었다.

src/main/generated

 

그 후 어플리케이션을 실행 하니까 다음과 같이 Q클래스를 찾을 수 없다는 오류가 발생했다.

심볼없음

 

원인은 프로젝트 모듈 셋팅에서 generated로 바꾼 경로를 추가 해주지 않았기 때문이다.

File - Project Structure - Project Settings - Modules를 들어가보면 다음과 같은 창이 나온다.

쿼리dsl1

 

main에서 우측 Add Content Root를 눌러서 다음의 경로를 포함시켜 준다.

쿼리dsl2

 

그 후 OK를 누르고 실행을 해보면 정상적으로 Q클래스를 찾아서 실행이 된다.

 

참고 ) QueryDSL로 작성한 Q클래스가 컴파일 에러가 나는 경우

이 경우는 아직 Q클래스를 생성하지 않아서 생기는 에러이다.

인텔리제이 우측 상단에 Gradle탭을 열어준다.

zz

compileQuerydsl을 눌러주게 되면 Q클래스가 생성되어 에러가 해결이 된다.

 

회고

이것 때문에 한동안 엄청난 스트레스를 받으며 에러의 원인을 찾아다녔는데

학원 동기였던 김성렬 형의 도움으로 해결할 수 있었다.

이번 포스팅으로 해당 에러로 고통받고 있는 여러분들을 구해줄 구세주가 되었기를 바란다.

반응형

댓글