一、问题背景
使用jenkins构建jar包时,提示报错如下:
Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 903 source files to /var/jenkins_home/workspace/yinling-dev-yinling-kpi/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.465 s
[INFO] Finished at: 2023-08-29T07:43:58Z
[INFO] ------------------------------------------------------------------------
Waiting for Jenkins to finish collecting data
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project kpi: Fatal error compiling: java.lang.IllegalAccessError: class lombok.javac.apt.LombokProcessor (in unnamed module @0x79a9746f) 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 @0x79a9746f -> [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.
[ERROR]
[JENKINS] Archiving /var/jenkins_home/workspace/yinling-dev-yinling-kpi/pom.xml to yinling/kpi/1.0-SNAPSHOT/kpi-1.0-SNAPSHOT.pom
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
channel stopped
推送通知{"markdown":{"content":"【yinling-dev-yinling-kpi】构建失败!!!😭n >构建用时:13 secn >[查看控制台](http://192.168.3.66:8888/job/yinling-dev-yinling-kpi/3/console)"},"msgtype":"markdown"}
通知结果{"errcode":0,"errmsg":"ok"}
项目运行结果[FAILURE]
Finished: FAILURE
二、问题排查
可能的原因:
项目使用了Lombok来优化Java代码
但是JDK与Lombok的模块化导致在新的Java版本上编译会报错
解决方法:
升级Lombok版本到支持当前JDK模块化的版本
降低JDK版本到Lombok支持的范围
尝试使用lombok.config文件配置
简化代码去除Lombok依赖进行测试
三、问题处理
jenkins的java默认路径为:/opt/java/openjdk/bin/java
此时将jdk8直接拷贝至该路径,发现docker运行失败。
随机尝试使用jdk11版本,jenkins启动成功,继续执行构建,发现存在其他报错
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project DynaminCost: Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags -> [Help 1]
检查jenkins配置,全局工具配置
手动指定jdk8版本的路径,不要使用默认路径,重新执行构建、问题解决。