Lombok 1.18.12 VS Java 14 => Fight!

2023. 1. 11. 10:39IT개발/Java

반응형

java.version을 12=> 14로 올렸더니 빌드하자 마자 떡!하고 아래의 오류발생!

[INFO] Compiling 724 source files to C:\dev\workspace\m2platform\target\classes
[INFO] -----------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] -----------------------------------------------------------------------
[INFO] Total time:  7.509 s
[INFO] Finished at: 2023-01-11T10:18:20+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile
(default-compile) on project 
: Fatal error compiling java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor 
(in unnamed module @0x742cd447) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment 
(in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing 
to unnamed module @0x742cd447 -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

뭐지 에러로그를 보니 lombok 친구가 Java컴파일 관련 클래스에 접근할수가 없어?

이게~~ 뭔~~ 멍멍 소리야?

알아보니 JDK14 버전부터(JDK13까지는 1.18.12 동작함)  또는 버전업이 이루어 지면서 강력크한 캡슐화로 인해

lombok 처럼 컴파일 중간에 클래스에 접근해야하기 때문에 

lombock 1.18.19 이하 버전에서는 오류가 난다고 한다.

lombock 1.18.20에서는 그문제를 회피할수는 있으나

JDK버전이 올라가면서 또 어떤 조치로 막힐지 모르니 계속 주시해야할듯 하다.

출처 : https://github.com/projectlombok/lombok/issues/2790
댓글 발췌 : 

JDK 16 uses strong encapsulation by default. 

Lombok have to use compiler internal classes to modify things during compilation. 

Since 1.18.20 lombok uses a workaround/hack to still access these classes 

but this most likely will not be possible anymore in future versions 

(it still works fine in JDK17). 

As soon as this happens you have to add a bunch of additional --add-opens flags. 

You can find some more details in #268(https://github.com/projectlombok/lombok/issues/2681)

아래는 pom.xml내 java.version 업그레이드후 lombok 버전 업그레이드 후속조치!

<!-- before : using java 12 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

<!-- after : java 14 version upgrade-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
    <scope>provided</scope>
</dependency>

 

반응형