Dev

[Gradle] Lombok 사용 시 'cannot find symbol' 에러 해결

김세진 2024. 10. 2. 14:07
반응형

 

 

 

 

개요

 

Java17, Gradle을 사용하는 SpringBoot 프로젝트를 새로 생성 후, Lombok을 추가하여 코드를 작성했다. 그리고 간단한 테스트 코드를 작성하여 실행하려는데 아래와 같이 cannot find symbol 에러가 발생했다.

 

에러 발생

 

분명 Dependency도 잘 추가했고, @Getter 등 Lombok 관련 코드도 클라이언트 코드에서 문제 없이 작성이 가능했는데 말이다. 위 에러는 SpringBootApplication을 실행할 때에도 위 Lombok 관련 코드가 포함된다면 동일하게 발생했다.

 

 


원인

 

두괄식으로 설명하자면, build.gradle에 implementation으로 Lombok의 의존성은 추가했지만, annotationProcessor로는 Lombok을 추가하지 않았기 때문이었다.

 

Lombok은 컴파일 타임에 annotation을 처리하여 코드를 생성하는데, implementation만 사용하면 런타임에서만 인식될 뿐 컴파일 타임에 처리할 수 없는 것이다. 따라서 컴파일 타임에 처리가 가능하도록 annotationProcessor라는 DependencyHandler로도 Lombok의 의존성을 추가해야 했다.

 

 


해결

 

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

 

위처럼 annotationProcessor로도 의존성을 추가해 lombok을 컴파일 타임에 동작하게 하여 문제를 해결했다.

 

 

 

 

 

 

반응형