序
本文主要研究下在带有 Lombok (1.16.20 版本) 注解的代码在 Java10 下的编译问题。
问题
Erro fatal Compilar em org.apache.maven.lifecycle.internal.mojoexecutor.execute (mojoexecutor.java:216) em org.apache.maven.lifecycle.internal.mojoexecutor.execute (mojoexecutor.java:13 AS org.apache.maven.lifecycle.internal.mojoexecutor.execute (mojoexecutor.java:145) em org.apache.maven.lifecycle.internal.lifecycymodulebuilder.build1) org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.lifecycyclestarter.execute (LifeCyclestarter.java:128) em org.apache.maven.defaultMaven.doexecute (defaultMaven.java:307) AT org.apache.maven.defaultMaven.doexecute (defaultMaven.java:193) em org.apache.maven.defaultMaven.execute (defaultMaven.java:106) em org.apache.maVen.cli.mavincli. org.apache.maven.cli.mavencli.Domain (mavencli.java:286) em org.apache.maven.cli.mavencli.main (MAVENCLI.JAVA:197) em java.base/jdk.InTal.Reflect.nativEnT.NativEnT.Nativen) java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.method.invoke (method.java:564) em org.codehaus.plexus.classworlds.launcher.launcher.launchetonced (lançador.java:289) org.codehaus.plexus.classworlds.launcher.launcher.launch (lançador.java:229) em org.codehaus.plexus.classworlds.launcher.launcher.mainwithExitCode (lançador.java:415) AT org.codehaus.plexus.classworlds.launcher.launcher.main (lançador.java:356) causado por: org.apache.maven.plugin.mojoexecutionException: compilação de erro fatal em org.apache.maven.plugin.compiler.abstractcompilermojo.execute (abstractcompilermojo.java:1086) em org.apache.maven.plugin.compiler.compilermojo.execute (compilos org.apache.maven.plugin.defaultBuildpluginManager.executemojo (DefaultBuildPluginManager.java:134) em org.apache.maven.lifecycle.internal.mojoexecutor.execute (mojoexotor.java:20:208) org.codehaus.plexus.compiler.compilerexception: java.lang.ExceptioninInitializerError em org.codehaus.plexus.compiler.javac.javaxtoolscompiler.compileinprocess (javaxtoolscompiler.java:173) org.codehaus.plexus.compiler.javac.javaccompiler.performcompile (javaccompiler.java:174) em org.apache.maven.plugin.compiler.abstractcompilermojo.execute (abstrationcompilermojo.java.Java.5eecute.exeecute (abstractompilermoJojo.java.Java.aCerMoNerMoJoJo.execute (abstrationcompilermojo.java.java.5eecution.exeecute (abstrationcompilermojo.java.java.pilermojo.execute (abstrationCermoJojo.java.Java: java.lang.runtimeException: java.lang.ExceptioninInitializerError em jdk.compiler/com.sun.tools.javac.api.javactakimpl.handleExceptions (javactaskimpl.java:158) em jdk.compiler/com.sun.tools.javac.api.javactakimpl.docall (javactakimpl.java:96) em jdk.compiler/com.sun.tools.java:90) org.codehaus.plexus.compiler.javac.javaxtoolscompiler.compileInprocess (javaxtoolscompiler.java:126) ... 25 MorecaUsed por: java.lang.exceptioninInitializerRor. java.base/java.lang.class.ForName0 (método nativo) em java.base/java.lang.class.forname (classe.java:374) em lombok.core.spiloadutil $ 1 $ 1.Next (spiloadutil.java:111) AT lombok.javac.handlerlibrary.loadannotationHandlers (handlerlibrary.java:171) em lombok.javac.handlerlibrary.load (handlerlibrary.java:156) em lombok.javac.javactransformer. lombok.javac.apt.lombokprocessor.init (lombokprocessor.java:89) em lombok.core.annotationProcessor $ javacdescripttor.want (anotationprocessor.java:87) em lomberpok.core.annotationPrococrococSor.init.java:87) em lombok.core.annotationProcrocor.init.init.Java:87) lombok.launch.annotationProcessorHider $ AnoTationProcessor.init (AnoTationProcessor.java:69) em jdk.compiler/com.sun.tools.javac.processing.javacprocessingEnvironment $ ProcessorState. jdk.compiler/com.sun.tools.javac.processing.javacprocessingEnvironment $ descobertaProcessors $ processorstateIterator.next (javacprocessingenvironment.java:771) em jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment.discoverandrunprocs (javacprocessingenvironment.java:866) em jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment.access $ 2100 (javacprocessingenvironment.java:110) em jdk.compiler/com.sun.tools.javac.processing.javacprocessingEnvironment $ redond.run (javacprocessingenvironment.java:1202) em jdk.compiler/com.sun.tools.javac.processing.javacprocessingEnvironment.doprocessing (javacprocessingenvironment.java:1311) em jdk.compiler/com.sun.tools.javac.main.javomiler jdk.compiler/com.sun.tools.javac.main.javacompiler.compile (javacompiler.java:928) em jdk.compiler/com.sun.tools.javactac.api.javactaskimpl.lambda $ docall $ 0 (javactakimpl.javactac.api.javactaskimpl.lambda $ docall $ jdk.compiler/com.sun.tools.javac.api.javactaskimpl.handleExceptions (javactakimpl.java:142) ... 28 Morecaused por: java.lang.classNotFoundException: com.sun.tools.javac.code.typetags at java.base/java.lang.classloader.findclass (classelloader.java:711) em java.base/java.lang.classloader.loadclass (classeLoader.java:566) at lombok.launch.shadowcllassLoader.java: java.base/java.lang.classLoader.loadclass (classloader.java:499) em java.base/java.lang.class.forname0 (método nativo) em java.base/java.lang.class.forname (classe.java:291) lombok.javac.javactreeMaker $ schroedingertype.getfieldcached (javactreemaker.java:156) em lombok.javac.javactreemaker $ typeTag.typeTag (javactreemaker.java:245) em lombok.javac.javac.javac.javac.javac.
解决
这是当前 1.16.20 版本的问题 , 通过升级到最新 Snapshot 版本 1.16.21 即可搞定 , 1.16.21 的版本更新描述如下:
Versão: 1.16.21 (2018-03-29 11:54:42 UTC) v1.16.20 é o mais recente lançamento estável do projeto lombok.platform: corrija o uso do LOMBOK juntamente com o novo recurso de módulo-info.java do JDK9. Edição #985Platform: Algum trabalho inicial no suporte a jdk10.bugfix: correção potencial para netbeans <9. Edição #1555ProMotion: o VAR foi promovido do experimental para o pacote principal sem alterações. O 'antigo' experimental ainda está por perto, mas está preguiçoso e é um alias para o novo pacote principal. var documentation.old-cruft: lombok.experimental.builder e lombok.experal.Value são remanescentes depreciados de quando essas características ainda estavam em experimental. Eles agora são completamente removidos. Se o seu projeto depende de uma versão mais antiga do Lombok, que ainda os possui; Não se preocupe, o Lombok ainda processa essas anotações. Não os inclui mais na jarra.
本地安装
MVN Instale: Instale -File -dFile = LOMOK -1.16.21.JAR -DGroupID = org.lombokProject -DartifactId = LOMOM
更新依赖
<Depencency> <voundid> org.projectlombok </frupidId> <TROTIFACTID> LOMOMPOK </STIFACTID> <Versão> 1.16.21 </sisters> <cope> fornecido </scope> </dependency>
这样就大功告成了 , 如果大家在测试的时候还有任何疑问 , 可以在下方留言区讨论 , 感谢大家对武林网的支持。