[Java] Lombok 작동 안할 때

ddanglehee·2025년 1월 26일

트러블슈팅

목록 보기
1/1

📌 문제 상황

Class에 @Data 어노테이션과 @AllArgsConstructor를 추가하고,
IntelliJ의 Structure에서 getter, setter 등등과 모든 멤버변수에 대한 생성자가 있음을 확인했음에도,
다음과 같은 오류 메세지와 함께 빌드가 실패했다.

java: constructor [클래스명] in class [클래스 path] cannot be applied to given types; ...

java: cannot find symbol
symbol: method getId() ...

이를 보고 롬복을 인식하는 데에 문제가 생겼음을 느꼈다.

그리고 왠지 모르겠는데, 롬복 어노테이션을 사용하고 오랜 시간이 지나고 빌드를 하거나 plugin을 삭제했다가 다시 설치하면 빌드 잘 됐다.
그런데 근본적인 해결이 안되고 나의 빌드를 운(?)에 맡겨야하는 게 너무 답답했다😇

📌 시도한 3가지 방법들

  1. dependency 추가, plugin 설치 모두 완료되었는지 확인
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
  1. IntelliJ에서 Enable annotation processing이 체크되어 있는지 확인
    맥북 기준 화면 왼쪽 상단에
    IntelliJ IDEA -> Preferences -> Build, Execution, Deployment -> Compiler -> Annotation Processors
    여기서 Enable annotation processing이 체크되어있어야 외부 어노테이션 라이브러리(like Lombok)가 컴파일 타임에 잘 작동할 수 있다고 한다.

    3. IntelliJ 버전 업데이트
        나와 똑같은 문제를 마주한 분이 버전 업데이트하니 해결했다고 하셔서 바로 시도!

하지만 이 세가지 방법 모두 오류를 해결하지 못했다.🥹

💡 해결책

필자는 Maven으로 프로젝트를 관리하기 때문에 pom.xml을 기준으로 설명하면,
Plugin부분에 <version>${lombok.version}</version>로 Lombok 버전을 명시해주니 빌드가 항상 성공했다!
Maven의 Configuration에서 Lombok의 버전을 식별하지 못해서 일어난 문제라고 한다.

다음과 같이 작성하면 된다.

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
        </plugins>
profile
잊고싶지 않은 것들을 기록합니다✏️

0개의 댓글