java10下编译lombok注解代码分享

作者:codecraft 时间:2023-06-06 11:02:35 


本文主要研究下在带有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>

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

来源:https://segmentfault.com/a/1190000014112459

标签:java10,lombok,注解
0
投稿

猜你喜欢

  • Android实现根据评分添加星级条

    2021-10-30 13:19:57
  • Spring 事务事件监控及实现原理解析

    2023-12-24 04:20:20
  • Spring定时任务无故停止又不报错的解决

    2021-06-06 08:41:27
  • Java封装的实现访问限定符、包

    2023-03-20 07:08:48
  • Java 静态绑定与动态绑定深入分析

    2021-06-19 05:31:04
  • C#实现软件监控外部程序运行状态的方法

    2023-12-04 20:46:15
  • 2021最新Android笔试题总结美团Android岗职能要求

    2023-11-29 15:24:52
  • Java类中字段可以不赋予初始值的原因分析

    2023-01-05 15:55:49
  • eclipse端口被占用问题的解决方法

    2022-10-04 07:01:54
  • TabLayout标题文字不显示的解决操作

    2023-02-19 18:34:48
  • Java中接口和抽象类的区别详解

    2022-09-28 15:21:19
  • android自定义view之模拟qq消息拖拽删除效果

    2023-01-29 11:48:34
  • Springboot整合MybatisPlus的实现过程解析

    2021-06-14 02:47:06
  • android多媒体类VideoView使用方法详解

    2023-12-12 03:37:47
  • JAVA编程不能不知道的反射用法总结

    2023-08-25 18:41:06
  • android TabLayout使用方法详解

    2021-08-06 07:52:17
  • Java 回调函数深入理解

    2023-11-01 17:32:04
  • Android 自定义输入支付密码的软键盘实例代码

    2021-08-09 11:41:43
  • SpringBoot集成MybatisPlus报错的解决方案

    2022-06-28 05:03:20
  • java 实现迷宫回溯算法示例详解

    2023-12-14 23:52:26
  • asp之家 软件编程 m.aspxhome.com