序
本文主要研究下在带有LOMBOK(1.16.20版本)注解的代码在java10下的编译问题。
问题
致命错误在org.apache.maven.lifecycle.internal.mojoexecutor.execute(mojoexecutor.java:216)at org.apache.maven.maven.lifecycle.internal.internal.mojoexecutor.mojoexecutor.ecuter.ececuter.ececute.execute(mojoexececutor.java:153)at org.apache.maven.lifecycle.internal.mojoexecutor.execute(mojoexecutor.java:145)at org.apache.maven.maven.lifecycle.internal.lifecyclemodulebuilder.build.buildproject.buildprodject(lifecycyclemodulebuilderder.java:116) org.apache.maven.lifecycle.internal.lifecyclemodulebuilder.buildproject(lifecyclemodulebuilder.java:80)at org.apache.maven.lifecycle.internal.builder.singlethreaded.singlethreadedbuilder.build(singlethreadedbuilder.java:51) org.apache.maven.defaultmaven.doexecute(defaultmaven.java:307)at org.apache.maven.defaultmaven.deexecute(defaultmaven.java:193)at orgache.maven.maven.defeaultmaven.defaultmaven.defaultmaven.javeault.jjavaeault.jjavaeault.jjavaavaeault(jjavaeault) org.apache.maven.cli.mavencli.execute(mavencli.java:862)at org.apache.maven.maven.cli.mavencli.mavencli.domain(mavencli.java:286)at org.apache.maven.maven.maven.cli.cli.mavencli.mavencli.mavencli.mavencli.maven.mavencli.maven.maven.maven.mavencli.maaven.maven.maavencli.maaven.mavencli.maavencli.mmain(mmavencli.mmain) java.base/jdk.internal.reflect.nativemethodaccessorimpl.invoke0(本机方法)java.base.base/jdk.internal.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) java.base/jdk.internal.reflect.delegatingmethodaccesorimpl.invoke(delegatingmethodaccesorimpl.java:43) org.codehaus.plexus.classworlds.launcher.launcher.launchen.launchenhance(launcher.java:289)at org.codehaus.plexus.plexus.classworlds.launcher.launcher.launcher.launcher.launch.launch(pluncher.java:229 at at lunageer.java:229 at at pluncher.java:229 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)Caused by: org.apache.maven.plugin.MojoExecutionException:致命错误在org.apache.maven.plugin.compiler.abstractcompilermojo.execute(abractcomcompilermojo.java:1086)at org.apache.maven.plugin.plugin.compilermojo.pilermojo.ecute.comecute.compache.plugin.compilemojo.execute(CompilerMoJo.java:168)at org.apache.maven.plugin.defaultbuildpluginmanager.executemojo(defaultbuildpluginmanager.java:134)at org.apache.maven.maven.lifecycle.internal.internal.internal.mojoexececuter.mojoexecute.execute.execute.exececute(Mojoexecutor..java:20 Morecaude fy 4 Morecaudy)... 208) org.codehaus.plexus.compiler.CompilerException: java.lang.ExceptionInInitializerError at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:173) at org.codehaus.plexus.compiler.javac.javaccompiler.performcompile(javaccompiler.java:174)at org.apache.maven.maven.maven.plugin.compiler.piler.abstrackcompartcompartcomportcompillermojo.ecute(abfacsigoncompilermojo.ecute(abfacsion -compilermojo.java:Morecava:Morecava:23 Morecava:23 Morecava:23 Morecauda):23 Morecauda):23 Morecava) java.lang.runtimeException:java.lang.exceptionininitializererror at Jdk.compiler/com.sun.tool.tools.javac.api.javactaskimpl.handleexceptions(javactaskimpl.java:158)at jdk.compiler/com.sun.tools.javac.api.javactaskimpl.docall(Javactaskimpl.java:96) org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126) ... 25 moreCaused by: java.lang.ExceptionInInitializerError at lombok.javac.handlers.HandleGetter.<clinit>(HandleGetter.java:303) at java.base/java.lang.class.forname0(本机方法)java.base/java.lang.class.forname(class.java:374)lombok.core.core.core.spiloadutil $ 1 $ 1 $ 1 $ 1.Next(spiloadutil.java:111) lombok.javac.handlerlibrary.loadannotationHandlers(Handlerlibrary.java:171)lombok.javac.javac.handlerlibrary.load.load(handlerlibrary.java:156)lombok.javac.javac.javac.javac.javactransformer.javactransformer.javactransform. <sit>(Javactransformer.javactransformer.jjava:444444444444444444444444444444444444) lombok.javac.apt.LombokProcessor.init(LombokProcessor.java:89) at lombok.core.AnnotationProcessor$JavacDescriptor.want(AnnotationProcessor.java:87) at lombok.core.AnnotationProcessor.init(AnnotationProcessor.java:140) at lombok.launch.AnnotationProcessorHider $ andotationProcessor.init(annotationProcessor.java:69) jdk.compiler/com.sun.tools.javac.javac.processing.javacprocessingenvironment $ discusionedProcessors $ processororStateTateIterator.next(javacprocessingenvironment.java:771)at jdk.compiler/com.sun.tools.javac.javac.processing.javacprocessingenvorironment.discoverandrunprocs(javacprocessingenvironment.java:866)at jdk.compiler/com.sun.tools.javac.javac.processing.javacprocessingenvironment.access $ 2100(JavacProcessingenvironment.java:110) jdk.compiler/com.sun.tools.javac.javac.processing.javacprocessingenvironmironment $ ound.run(javacprocessingenvironment.java:12202) jdk.compiler/com.sun.tools.javac.javac.processing.javacprocessingenvorironment..doprocessing(javacprocessingenvironment.java:1311) jdk.compiler/com.sun.tools.javac.main.javacompiler.compile(javacompiler.java:928) jdk.compiler/com.sun.tools.javac.api.javactaskimpl.handleexceptions(javactaskimpl.java:142)... 28 Morecaused用户: java.base/java.lang.ClassLoader.findClass(ClassLoader.java:711) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566) at lombok.launch.ShadowClassLoader.loadClass(ShadowClassLoader.java:422) at java.base/java.lang.classloader.loadclass(classLoader.java:499)at Java.base/java.base/java.lang.class.forname0(本机方法)at Java.base/java.base/java.lang.lang.lang.class.forname(class.java:291)at lombok.javac.JavacTreeMaker$SchroedingerType.getFieldCached(JavacTreeMaker.java:156) at lombok.javac.JavacTreeMaker$TypeTag.typeTag(JavacTreeMaker.java:245) at lombok.javac.Javac.<clinit>(Javac.java:155) ... 49 more
解决
这是当前1.16.20版本的问题,通过升级到最新快照版本1.16.21即可搞定,1.16.21的版本更新描述如下:
版本:1.16.21(2018-03-29 11:54:42 UTC)V1.16.20是Project Lombok的最新稳定版本。Platform.Platform:修复使用Lombok与JDK9的新Module-Info.java功能一起使用。问题#985 Platform:支持JDK10的一些初步工作。BugFix:NetBeans的潜在修复<9。问题#1555 Promotion:VAR已从实验促进到主要软件包,没有任何更改。 “旧的”实验仍在附近,但已弃用,这是新的主包装套件的别名。 var document。现在,它们被完全删除。如果您的项目取决于仍然具有这些的旧版本的LOMBOK;不用担心,Lombok仍在处理这些注释。它不再将它们包含在罐子里。
本地安装
MVN安装:install -file -dfile = lombok -1.16.21.jar -dgroupid = org.lombokproject -dartifactid = lombok -dversion = 1.16.21 -dpackaging = jar = jar
更新依赖
<dependency> <groupId> org.projectlombok </groupId> <Artifactid> Lombok </artifactid> </artifactid> <版本> 1.16.21 </version> <scope>提供</scope>
这样就大功告成了,如果大家在测试的时候还有任何疑问,可以在下方留言区讨论,感谢大家对武林网的支持。,感谢大家对武林网的支持。