序
本文主要研究下在带有 Lombok (1.16.20 版本) 注解的代码在 Java10 下的编译问题。
问题
Fatal error compiling at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.mojoExecutor.execute (mojoExecutor.java:145) di org.apache.maven.lifecycle.internal.lifecyclemodulebuilder.buildproject (lifecyclemoduleBuilder.buildproject (lifecyclemoduleBuilder.buildproject (lifecyclemoduleBuilder.buildproject (lifecyclemoduleBuilder.buildproject (lifecyclemoduleBuilder.buildproject (lifecyclemoduleBuilder.buildproy org.apache.maven.lifecycle.internal.lifecyclemodulebuilder.buildproject (lifecyclemodulebuilder.java:80) di org.apache.maven.lifecycle.internal.builder.singlethreaded.singlethreadedbuilder.build (singlethreadedbuilder.java:51) di org.apache.maven.lifecycle.Ininternal.lifecycycleScarter.exachen.lifecycle.Internal.lifecycleScarter.exache.exachen.lifecycle.Internal.lifecycleScarter.exache.exache.exact org.apache.maven.defaultMaven.doexecute (defaultMaven.java:307) di org.apache.maven.defaultMaven.doexecute (defaultMaven.java:193) di org.apache.maven.defaultMaven.exececut org.apache.maven.cli.mavencli.execute (mavencli.java:862) di org.apache.maven.cli.mavencli.domain (mavencli.java:286) di org.apache.maven.cli.Mavence.Maining java.base/jdk.internal.reflect.nativeMethodaCessorImpl.invoke0 (metode asli) di java.base/jdk.internal.reflect.nativemethodaccessormpl.invoke (nativeMethodaCessImpl.java:62) di java.base/jdk.internal.reflect.delegatingmethodacessorimpl.invoke (delegatingmethodaccessorimpl.java:43) di java.base/java.lang.reflect.method.invoke (methava.java:564) di org.codehaus.plexus.classworlds.launcher.launcher.launchenhanced (peluncur.java:289) di org.codehaus.plexus.classworlds.launcher.launcher.launch (peluncur.java:229) di org.codehaus.plexus.classworlds.launcher.launcher.mainwithexitcode (peluncur.java:415) di org.codehaus.plexus.classworlds.launcher.launcher.main (peluncur.java:356) disebabkan oleh: orgoxcce.main.main.main. Kesalahan Fatal Mengompilasi di org.apache.maven.plugin.compiler.abstractcompilermojo.execute (AbstrakCompilermojo.java:1086) di org.apache.maven.plugin.c.compilermojo.execute (compilermojo.java:166) atmojo.execut org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20 moreCaused by: org.codehaus.plexus. org.codehaus.plexus.compiler.javac.javaccompiler.performCompile (javaccompiler.java:174) di org.apache.maven.plugin.abstractcompilermojo.Execute (abstrakcompilermojo.java:abstractcompilermojo.Execute (abstrakcompilermojo.java:abstractcompilermojo.Execute (abstrakcompilermojo.java:AbstractCompilermojo.Execute (abstrakcompilermojo.java:AbstractCompilermojo java.lang.runtimeException: java.lang.exceptioninitializerError di jdk.compiler/com.sun.tools.javac.api.javactaskimpl.handleExceptions (javactaskimpl.java:158) di jdk.compiler/com.sun.tools.javac.api.javactaskimpl.docall (javactaskimpl.java:96) di jdk.compiler/com.sun.tools.javac.api.javactaskImpl.call (javactaskimpl.java:90) org.codehaus.plexus.compiler.javac.javaxtoolscompiler.compileInprocess (javaxtoolscompiler.java:126) ... 25 morecause oleh: java.lang.lang. java.base/java.lang.class.forname0 (metode asli) di java.base/java.lang.class.forname (class.java:374) di lombok.core.spiloadutil $ 1 $ 1.Next (spiloadutil.java:111) di lombok.javac.handlerlibrary.loadAnnotationHandlers (handlerlibrary.java:171) di lombok.javac.handlerlibrary.load (handlerlibrary.java:156) di lombok.javac.javactransformer. lombok.javac.apt.lombokprocessor.init (lombokprocessor.java:89) di lombok.core.annotationprocessor $ javacdescriptor.want (annotationprocessor.java:87) di lombok.core.notationprocessor.init.init (annotation.core.core.core.notationprocessor.init (annotation. lombok.launch.AnnotationProcessorHider $ annotationprocessor.init (annotationprocessor.java:69) di jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment $ processorstate. jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment $ DiscoveredProcesors $ processorstateiterator.next (javacprocessingenvironment.java:771) di jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment.discoverandrunprocs (javacprocessingenvironment.java:866) di jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment.access $ 2100 (javacprocessingenvironment.java:110) di jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment $ round.run (javacprocessingenvironment.java:1202) di jdk.compiler/com.sun.tools.javac.processing.javacprocessingenvironment.doprocessing (javacprocessingenvironment.java:1311) di jdk.compiler/com.sun.tools.javac.main.javacompiler.piler/com.sun.tools.javac.main.javacompiler jdk.compiler/com.sun.tools.javac.main.javaCompiler.compile (javacompiler.java:928) di jdk.compiler/com.sun.tools.javacml. jdk.compiler/com.sun.tools.javac.api.javactaskImpl.handleExceptions (javactaskimpl.java:142) ... 28 lebih banyak lagi oleh: java.lang.typetagexception: com.sun.tools.javac.code.typetaget java.base/java.lang.classloader.findclass (classloader.java:711) di java.base/java.lang.classloader.LoadClassclassererererer.java:566) di lombok.launch.shadowclasserer.Loaderer (LOADRASS LOMPLASS.42) java.base/java.lang.classloader.LoadClass (classloader.java:499) di java.base/java.lang.class.forname0 (metode asli) di java.base/java.Lang.class.forname (class.java:291) di AT/JAVA.LANG.Class.291) lombok.javac.javactreemaker $ schroedingerType.getfieldcached (javactreemaker.java:156) di lombok.javac.javactreemaker $ typetag.typetag (javactreemaker.java:245) di lombok.javac.javac.javaC.
解决
这是当前 1.16.20 版本的问题 , Snapshot 版本 1.16.21 即可搞定 , 1.16.21 的版本更新描述如下 :
Versi: 1.16.21 (2018-03-29 11:54:42 UTC) v1.16.20 adalah rilis stabil terbaru dari Project Lombok.Platform: Perbaiki untuk menggunakan Lombok bersama dengan fitur module-info.java baru JDK9. Edisi #985Platform: Beberapa pekerjaan awal untuk mendukung JDK10.BUGFIX: Potensi Perbaikan untuk NetBeans <9. Edisi #1555Promotion: VAR telah dipromosikan dari eksperimental ke paket utama tanpa perubahan. Eksperimental 'lama' masih ada tetapi sudah usang, dan merupakan alias untuk paket utama baru. Dokumentasi var.old-Cruft: lombok.experimental.builder dan lombok.experimental.value adalah sisa-sisa yang sudah usang ketika fitur-fitur ini masih dalam eksperimental. Mereka sekarang dihapus sepenuhnya. Jika proyek Anda bergantung pada versi Lombok yang lebih lama yang masih memilikinya; Jangan khawatir, Lombok masih memproses anotasi ini. Itu tidak lagi termasuk mereka dalam toples.
本地安装
MVN Instal: install -file -dfile = lombok -1.16.21.jar -dgroupid = org.lombokproject -dartifactid = lombok -dversion = 1.16.21 -dpackaging = jar
更新依赖
<dependency> <GroupId> org.projectLombok </groupid> <ArTifactId> lombok </artifactid> <version> 1.16.21 </version> <seCope> disediakan </scope> </dependency>
这样就大功告成了 , 如果大家在测试的时候还有任何疑问 , 可以在下方留言区讨论 , ,