侧边栏壁纸
  • 累计撰写 90 篇文章
  • 累计创建 95 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

Lombok和IDEA不兼容导致的报错

汤圆学Java
2022-05-06 / 0 评论 / 0 点赞 / 89 阅读 / 1,048 字
温馨提示:
本文最后更新于 2022-08-31,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题描述

今天拿到一个新项目,导入maven相关依赖后,编译运行,报错如下:

java: You aren't using a compiler supported by lombok, so lombok will not work and has been disabled.
  Your processor is: com.sun.proxy.$Proxy26
  Lombok supports: sun/apple javac 1.6, ECJ

原因分析

通过上网搜索,发现是lombok和IDEA之间的不兼容导致;

  • IDEA版本:2021.3.2
  • lombok依赖版本:1.18.24

IDEA官网说,IDEA为了处理增量式的注解程序,用了一个包装器来包装java编译器,使其可以收集更多编译有关的信息;

但是lombok却把这个包装器当成编译器进行处理,就导致了上面的错误;

解决办法

  • 【推荐】第一种:修改IDEA的编译参数,添加-Djps.track.ap.dependencies=falseFile | Settings | Build, Execution, Deployment | Compiler | Build process VM options field位置,如下所示:

image-20220505143739599

  • 第二种:更新lombok的版本,这里我降级到1.18.14就可以了;

    这里有个疑问,就是lombok的GitHub中说的是在1.18.14修复了这个问题,那为啥到了1.18.24又出问题了呢?猜测可能是跟IDEA 2021.3有关。

上面这两种解决办法都会弹出下面的警告:

java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.

这个警告可以忽略,它的意思就是说我们关闭了增量式注解程序处理,而这个增量式注解程序处理正是报错的原因所在

总结

上面这两种办法看情况使用:

  • 修改IDEA配置:这种修复方式属于无损修复,只需要修改IDEA配置,不会涉及到项目本身的代码及配置;
  • 更新lombok版本:需要更新到合适的lombok(比如1.18.24),同时要确保不会影响项目其他地方的代码逻辑,这就需要进行全方位的测试;
0

评论区