序
本文主要研究下在带有 Lombok (1.16.20 版本) 注解的代码在 Java10 下的编译问题。
问题
Fatale Fehlerkompilierung bei org.apache.maven.lifecycle.internal.mojoexecutor.execute (Mojoexecutor.java:216) bei org.apache.maven.lifecycle.internal.mojoexecutor.execute (Mojoexecutor.java:153) at (Mojoexecutor.java:153) at Aterecutor. org.apache.maven.lifecycle.internal.mojoexecutor.execute (mojoexecutor.java:145) at org.apache.maven.lifecycle.internal.lifecyclemodulebuilder.buildproject (lifecyclemoduleBuilder.java. org.apache.maven.lifecycle.internal.lifecyclemodulebuilder.buildproject (LifeCyclemodulebuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethrede.singleThreadededbuilder.build (SingleThrededBuilder.java:51) bei org.apache.maven.lifecycle.internal.lifecyclestarter.exextecute (lifecyclestarter.java.128). org.apache.maven.defaultmaven.doexecute (defaultMaven.java:307) at org.apache.maven.defaultmaven.doexecute (DefaultMaven.java:193) at org.apache.maven.maven.defaultmaven.execeT (DefaultMaven.java: 206) in der. org.apache.maven.cli.mavencli.execute (mavencli.java:862) at org.apache.maven.cli.mavencli.domain (mavencli.java:286) at org.apache.maven.cli.mavencli.Mavencli. java.base/jdk.internal.reflect.nativemethodaccessorimpl.invoke0 (native Methode) bei java.base/jdk.internal.reflect.nativemethodaccessorImpl.invoke (nativemethodaccessorimpl.java:62) at aTeT ( java.base/jdk.internal.reflect.delegatingMethodaccessorimpl.invoke (DelegatingMethodaccessorimpl.java:43) bei Java.base/java.lang.reflect.method.invoke (method.java:564) at org.codeehaus.plexus.classworlds.launcher.launcher.launchenHanced (launcher.java:289) unter org.codeehaus.plexus.classworlds.launcher.launchner.launch (Launcher.java:229) at at unter org.codeehaus.plexus.classworlds.launcher.launcher.mainwithexitcode (launcher.java:415) bei org.codeehehaus.plexus.classworlds.launchner.launcher.main (Launcher.java:356) verursacht von: or: or: orag.apache.max. Fehlerkompilierung bei org.apache.maven.plugin.compiler.abstractCompilermoJo.execute (AbstractCompilermojo.java:1086) unter org.apache.maven.plugin.compiler.compilermojo.execute (compilerMojo.java:168) bei org.apache.maven.plugin.defaultBuildpluginManager.executemojo (DefaultBuildPluginManager.java:134) bei org.apache.maven.lifecycle.internal.mojoexecutor. org.codeehaus.plexus.compiler.compilerexception: java.lang.exceptionininitializerError unter org.codehaus.plexus.compiler.javac.javaxtoolscompiler.comPileInprocess (Javaxtoolscompiler.java org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:174) at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075) ... 23 moreCaused by: java.lang.runtimeexception: java.lang.exceptionininitializerError unter jdk.compiler/com.sun.tools.javac.api.javactaskimpl.handleexceptions (javactaskimpl.java:158) bei jdk.compiler/com.sun.tools.javac.api.javactaskimpl.docall (javactaskimpl.java:96) unter jdk.compiler/com.sun.tools.javac.api.javactaskimpl.call (javactaskimpl.java:90) at org.codeehaus.plexus.compiler.javac.javaxtoolscompiler.comPileinprozess (Javaxtoolscompiler.java:126) ... 25 morecault von: java.lang.ExceptioninininitializerError bei lombok.javac.handledlern.handlegers.handlegers.handlegers.handlegers.handleger.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handlegers.handleds.handleds.Handiere. java.base/java.lang.class.forname0 (native Methode) unter java.base/java.lang.class.forname (class.java:374) bei lombok.core.spiloadutil $ 1 $ 1.Next (Spiloadutil.java:111) bei lombok.javac.handlerlibrary.loadannotationHandlers (handlerlibrary.java:171) at lombok.javac.handlerlibrary.load (handlerlibrary.java:156) at lombok.javac.javactransformator. lombok.javac.apt.lombokprocessor.init (lombokprozessor.java:89) in lombok.core.Annotationsprozessor $ javacdescriptor.want (AnnotationProcessor.java:87) at lombok.core.AnnotationPrescessor.init (AnnotationProzesor). lombok.launch.AnnotationProcessorHider $ AnnotationProcessor.init (AnnotationProcessor.java:69) bei jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenvironment $ jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenvironment $ entdeckteprozessoren jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenvironment.discoverandrunprocs (javacprocessinnenvironment.java:866) at jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenvironment.access $ 2100 (Javacprocessingenvironment.java:110) at jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenvironment $ Round.run (Javacprocessingenvironment.java:1202) at jdk.compiler/com.sun.tools.javac.processing.javacprocessinnenviron. jdk.compiler/com.sun.tools.javac.main.javacompiler.compile (javacompiler.java:928) unter jdk.compiler/com.sun.tools.javac.api.javactaskimpl.lambda $ $ 0 (javactaskimpl.javpl.javl.javpl.javpl.javl.javl.javl.javl.javl.javl.javl.javl. jdk.compiler/com.sun.tools.javac.api.javactaskimpl.handleExceptions (javactaskimpl.java:142) ... 28 meorecaupt von: java.lang.classnotfoundException: com.sun.tools.javac.cod.Codes.ttypetags Atth java.base/java.lang.classloader.findClass (classloader.java:711) unter java.base/java.lang.classloader.loadClass (classloader.java:566) unter lombok.launch.shadowclassader.loadClass (ShadowclassClass (Shadowclass ).java:422222222222222222222222222222222222222222222222222222222222. java.base/java.lang.classloader.loadClass (classloader.java:499) unter java.base/java.lang.class.forname0 (native Methode) bei java.base/java.lang.class.forname (class.java:291) at lombok.javac.javactreemaker $ schroedingertype
解决
这是当前 1.16.20 版本的问题 , 通过升级到最新 Snapshot 版本 1.16.21 即可搞定 , 1.16.21 的版本更新描述如下 :
Version: 1.16.21 (2018-03-29 11:54:42 UTC) V1.16.20 ist die neueste stabile Version von Project Lombok.Platform: Fix für die Verwendung von Lombok zusammen mit der neuen Funktion „New Modul-info.Java“ von JDK9. Ausgabe Nr. 985Platform: Einige erste Arbeiten zur Unterstützung von JDK10.bugfix: Potenzielle Fix für Netbeans <9. Ausgabe #1555Promotion: Var wurde von experimentell zum Hauptpaket ohne Änderungen beworben. Das "alte" experimentelle experimentelle ist noch da, ist aber veraltet und ist ein Alias für das neue Hauptpaket. var documentation.old-crupt: lombok.experimental.builder und lombok.experimental.value sind veraltete Überreste, wenn diese Merkmale noch experimentell waren. Sie werden jetzt vollständig entfernt. Wenn Ihr Projekt von einer älteren Version von Lombok abhängig ist, die noch diese hat; ärgern Sie sich nicht, Lombok verarbeitet diese Annotationen immer noch. Es schließt sie einfach nicht mehr in das Glas ein.
本地安装
MVN Installation: Installieren
更新依赖
<Depopenty> <gruppe> org.projectlombok </Groupid> <artifactId> lombok </artifactId> <version> 1.16.21 </Version> <scope> bereitgestellt </scope> </abhängig>
这样就大功告成了 , 如果大家在测试的时候还有任何疑问 , 可以在下方留言区讨论 , 感谢大家对武林网的支持。 感谢大家对武林网的支持。