본문 바로가기

Etc/Problem Solving

[JAVA] 프로젝트 build 시 log 인식 못하는 에러 lombok error: cannot find symbol log 해결

728x90

| 오류 현상

프로젝트를 실행하려고 하는데 아래와 같은 오류가 발생했다.

IDE : intelliJ

 

error: cannot find symbol log.info("a : {}", a);

                                              ^ symbol: variable log

                                               location: class A

 

 


@Slf4j 어노테이션이 있는데도 log 변수를 찾지 못하고 있던 것이다. 

몇가지 상황을 테스트해보면서 어떤 부분에서 인식을 못하고 있는지 확인해보자.

 

 

  • Lombok이 프로젝트에 제대로 설정되었는지 확인
    프로젝트에서 Lombok이 제대로 설정되지 않은 경우, @Slf4j가 log 객체를 생성하지 못할 수 있다.
    • build.gradle 또는 pom.xml에 Lombok이 포함되어 있는지 확인한다.
  • IDE에서 Lombok 설정 활성화
    IntelliJ IDEA나 Eclipse를 사용하는 경우, Lombok이 제대로 작동하려면 IDE 설정에서 Lombok 지원을 활성화해야 한다.
    • IntelliJ IDEA: Preferences -> Plugins에서 Lombok 플러그인이 활성화되어 있는지 확인
    • Eclipse: Help -> Eclipse Marketplace에서 Lombok 플러그인을 설치하고 Project Lombok 설정 확인
  • 프로젝트 재빌드 및 클린
    위의 설정이 되어 있어도 @Slf4j가 인식되지 않는 경우, IDE에서 프로젝트를 클린 빌드 후 재빌드 시도
    • IntelliJ IDEA: Build -> Rebuild Project
    • Eclipse: Project -> Clean...
  • 컴파일 에러가 지속될 경우 Lombok Annotation Processor 확인
    Preferences에서 Annotation Processors가 활성화되어 있는지 확인한다.
더보기

IntelliJ IDEA에서 Lombok Annotation Processor 설정 확인 방법

  1. 설정 열기: File > Settings (또는 Mac의 경우 IntelliJ IDEA > Preferences)로 이동
  2. Annotation Processors:
    • 왼쪽 사이드바에서 Build, Execution, Deployment > Compiler > Annotation Processors로 이동
  3. Enable annotation processing 체크:
    • Enable annotation processing 옵션을 체크합니다.
  4. 적용하고 확인을 눌러 설정을 저장합니다.
  5. 설정을 저장한 후 프로젝트를 다시 빌드합니다.

Eclipse에서 Lombok Annotation Processor 설정 확인 방법

  1. 설정 열기 : Window > Preferences로 이동
  2. Annotation Processors:
    • 왼쪽 메뉴에서 Java > Compiler > Annotation Processing으로 이동
  3. Enable annotation processing 체크:
    • Enable annotation processing 옵션을 체크합니다.
  4. 적용하고 확인을 눌러 설정을 저장합니다.
  5. 프로젝트를 Project > Clean...으로 클린 빌드

 

나의 경우, build.gradle을 확인해보니, 아래와 같이 선언되어있었다. 

dependencies {
    ...
    implementation 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    ...
 }

 

위  코드만 추가되어 있을 경우 Lombok은 프로덕션 코드에서는 사용할 수 있지만,

테스트 코드에서는 Lombok이 제대로 동작하지 않을 수 있다.

 

그래서 테스트코드에 작성한 log가 인식이 안되고 있었던 것이다.

이를 해결하기 위해 Lombok을 테스트 컴파일 환경에서도 사용할 수 있도록 추가 설정을 해주어야한다.

 

| 해결방법

Gradle에서 Lombok을 테스트 코드에서도 사용할 수 있도록 testCompileOnly 및 testAnnotationProcessor 구성을 추가해야한다.

// 테스트 코드에서 Lombok 사용
    testCompileOnly 'org.projectlombok:lombok:1.18.24'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.24'

 

프로젝트를 다시 동기화 한 후 빌드하니 정상적으로 동작한다!

 


참고 : Chat GPT

반응형