java10下编译lombok注解代码分享

网友投稿 369 2023-02-10


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.(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.(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.(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.(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.

OLbflVizeMD-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 stilhttp://l 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

更新依赖

org.projectlombok

lombok

1.16.21

provided

这样就大功告成了,如果大家在测试的时候还有任何疑问,可以在下方留言区讨论,感谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CountDownLatch同步工具类使用详解
下一篇:vue小白入门教程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~