반응형
개요
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을 컴파일 타임에 동작하게 하여 문제를 해결했다.
반응형
'Dev' 카테고리의 다른 글
[Git / IntelliJ] 마이크로서비스 구성 시 서브모듈의 형상 관리 통합하기 (2) | 2024.10.16 |
---|---|
[IntelliJ / DB] PostgreSQL 데이터베이스(스키마) 백업 및 복원하기 (0) | 2023.10.31 |
[IntelliJ] Resources 폴더를 찾지 못할 때 해결 방법 (application.properties 인식 방법) (0) | 2023.01.27 |