java10下编译lombok注解的代码

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java10下编译lombok注解的代码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本文主要研究下在带有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)     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)     at 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.LifecycleStarter.execute(LifecycleStarter.java:128)     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)     at 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.main(MavenCli.java:197)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at 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)     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.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: Fatal error compiling     at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1086)     at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:168)     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)     ... 20 more Caused by: 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.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:1075)     ... 23 more Caused by: java.lang.RuntimeException: java.lang.ExceptionInInitializerError     at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:158)     at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:96)     at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:90)     at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)     ... 25 more Caused by: java.lang.ExceptionInInitializerError     at lombok.javac.handlers.HandleGetter.<clinit>(HandleGetter.java:303)     at java.base/java.lang.Class.forName0(Native Method)     at java.base/java.lang.Class.forName(Class.java:374)     at lombok.core.SpiLoadUtil$1$1.next(SpiLoadUtil.java:111)     at lombok.javac.HandlerLibrary.loadAnnotationHandlers(HandlerLibrary.java:171)     at lombok.javac.HandlerLibrary.load(HandlerLibrary.java:156)     at lombok.javac.JavacTransformer.<init>(JavacTransformer.java:44)     at 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$AnnotationProcessor.init(AnnotationProcessor.java:69)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Processorstate.<init>(JavacProcessingEnvironment.java:674)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:771)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:866)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.access$2100(JavacProcessingEnvironment.java:110)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1202)     at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1311)     at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1250)     at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:928)     at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:100)     at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:142)     ... 28 more Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags     at 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.lang.Class.forName0(Native Method)     at java.base/java.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版本的问题,通过升级到最新snapshot版本1.16.21即可搞定,1.16.21的版本更新描述如下:

version: 1.16.21 (2018-03-29 11:54:42 UTC) v1.16.20 is the latest stable release of Project Lombok. PLATFORM: Fix for using lombok together with JDK9's new module-info.java feature. Issue #985 PLATFORM: Some initial work on supporting JDK10. BUGFIX: Potential fix for Netbeans < 9. Issue #1555 PromOTION: VAR has been promoted From experimental to the main package with no changes. The 'old' experimental one is still around but is deprecated, and is an alias for the new main package one. var documentation. OLD-CRUFT: lombok.experimental.Builder and lombok.experimental.Value are deprecated remnants of when these features were still in experimental. They are now removed entirely. If your project is dependent on an older version of lombok which still has those; fret not, lombok still processes these annotations. It just no longer includes them in the jar.

本地安装

mvn install: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>             <scope>provided</scope>         </dependency>
这样就大功告成了

小结

当前release版本(1.16.20)的lombok在java10下面编译有点小问题,不过可以使用最新的snapshot版本1.16.21来解决。

doc

脚本宝典总结

以上是脚本宝典为你收集整理的java10下编译lombok注解的代码全部内容,希望文章能够帮你解决java10下编译lombok注解的代码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。