본문으로 바로가기

 

IntelliJ IDEA 2020.3 버전에서 Build할때 아래 오류로 Lombok이 활성화 되지 못해서 ~~cannot find symbol 메시지와 함께 빌드가 실패 하는 증상이 발생하여 해결 방법을 포스팅합니다.

 

제가 사용하는 IntelliJ 빌드 버전은 아래와 같으며 Community Edition 역시 동일 증상이 발생했습니다.

>> IntelliJ IDEA 2020.3 (Ultimate Edition) Build #IU-203.5981.155, built on December 1, 2020 

java: You aren't using a compiler supported by lombok, so lombok will not work and has been disabled.
  Your processor is: com.sun.proxy.$Proxy8
  Lombok supports: sun/apple javac 1.6, ECJ

 

먼저 기본적인 lombok 세팅을 먼저 점검해 주세요. 아마 이 글을 보시는 분들은 이건 잘 세팅 되어 있을 거라 생각됩니다.

1-1. Setting > Plugins > Lombok Plugin install 확인

1-2. Setting > Build, Execution, Deployment > Compiler > Annotation Processors > Enable annotation processing 체크

 

2. 프로젝트에서 관리도구를 통해 Lombok dependency(의존성)을 추가할 때 최신 버전을 명시하여 내려 받아 주세요. 인텔리제이 최신 버전에서 주입받는 Lombok 보다 낮은 버전을 사용할 경우 발생할 때가 있다고 합니다. 아래는 각각 프로젝트 관리도구별 예시입니다.

Maven 
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.16</version>
    <scope>provided</scope>
</dependency>


Gradle 
providedCompile group: 'org.projectlombok', name: 'lombok', version: '1.18.16'

Ivy 
<dependency org="org.projectlombok" name="lombok" rev="1.18.16" conf="build" />

SBT
libraryDependencies += "org.projectlombok" % "lombok" % "1.18.16"

 

3. 위 방법으로도 해결되지 않았다면 JPS annotation processing 을 비활성화 하여 MapStruct processor의 기존 빌드로 컴파일 할 수 있도록 컴파일러의 Build process VM option을 추가해 주세요. jetbrains 이슈 노트를 보니 mapping processor 내에서 NPE(java.lang.NullPointerException)가 발생하여 컴파일러가 종속성 정보를 수집하지 못해 발생하는 문제로 보이는데 자세한 내용은 하단 reference를 참고 바랍니다.

 

Setting > Build, Execution, Deployment > Compiler > Shared build process VM options 추가 

-Djps.track.ap.dependencies=false

VM option 추가 후 빌드 해보면 JPS incremental annotation processing 경고가 뜨긴 하지만  정상적으로 빌드 되는 것을 확인 하실 수 있습니다.

Executing pre-compile tasks...
Loading Ant configuration...
Running Ant tasks...
Cleaning output directories...
Running 'before' tasks
Checking sources
Copying resources... [Project]
Parsing java... [Project]
java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. 
Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.
Writing classes... [Project]
Checking dependencies... [Project]
Dependency analysis found 0 affected files
Updating dependency information... [Project]
Adding @NotNull assertions... [Project]
Adding pattern assertions... [Project]
Running 'after' tasks
javac 7 was used to compile java sources
Finished, saving caches...
Executing post-compile tasks...
Loading Ant configuration...
Running Ant tasks...
Synchronizing output directories...
2021/03/04 4:48 오후 - Build completed successfully with 82 warnings in 1 min, 0 sec

| Reference

https://stackoverflow.com/questions/65128763/java-you-arent-using-a-compiler-supported-by-lombok-so-lombok-will-not-work-a

https://github.com/rzwitserloot/lombok/issues/2592

https://youtrack.jetbrains.com/issue/IDEA-250718#focus=Comments-27-4418347.0-0