问题描述
今天拿到一个新项目,导入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=false
到File | Settings | Build, Execution, Deployment | Compiler | Build process VM options field
位置,如下所示:
-
第二种:更新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),同时要确保不会影响项目其他地方的代码逻辑,这就需要进行全方位的测试;
评论区