Lombok 1.18.12 VS Java 14 => Fight!
2023. 1. 11. 10:39ㆍIT개발/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>
반응형
'IT개발 > Java' 카테고리의 다른 글
[java] Collections.shuffle(List<?> list) 리스트 내부 아이템 섞기 (0) | 2022.01.04 |
---|---|
[보안이슈] log4j 2.17 버전 취약점 대응(2.17.1 버전 업그레이드) (0) | 2021.12.30 |
[보안이슈] log4j 취약점 대응( 2.15, 2.16, 2.17 ) (0) | 2021.12.16 |
전자정부측 log4j 관련 FAQ 자료 공유(2.15 버전 업그레이드) (0) | 2021.12.14 |
전자정부 3.8에서 jdk 13,14 버전 사용시 오류 발생! 12버전은 돌아감 (0) | 2021.03.31 |