之前自己一直在用 Lombok 插件,真的是太好用了。。。不过在同事之间推广,却是一件很蛋疼的事情,有的觉得要单独装东西,觉得太麻烦了。。。所以我也就是自己用,工作没有怎么用。
不过昨天在用的时候,却发现 lombok 死活不生效的问题。
1. 安装 lombok
1.1. 参考地址:
https://www.baeldung.com/lombok-ide
1.2. 安装插件
The Jetbrains IntelliJ IDEA editor is compatible with lombok.
Add the Lombok IntelliJ plugin to add lombok support for IntelliJ:
1 | 1. Go to File > Settings > Plugins |
You can also check out Setting up Lombok with Eclipse and IntelliJ, a blog article on baeldung.
1.3. 修改 IDEA 配置
打开项目的 Annotation Processing
1.4. Maven 项目
如果项目是 Maven 项目,需要在 pom.xml 添加 lombok 的依赖:
1 | <dependency> |
1.5. 重启
然后重启 IDEA,然后美滋滋的等待着下幸福生活的降临。。。。开心。。。。
But。。。
But。。。
But。。。
1.6. 重新全量编译项目
打开 IDEA, Build -> Rebuild Project。
残忍的现实:
2. 错误解决
2.1. 分析
安装步骤,我都是按照文档做的,项目为什么还是报错啊?关键是 IDEA 的 编辑器 不报错那么就说明我们的插件安装是成功的,而且,编写代码的自动提示也是有的:
那就是说在实际编译的时候,项目没有找到 lombok 的依赖库,奇怪了??
仔细看上面 Rebuild 输出的日志有一行:
1 | Information:Eclipse compiler 4.10 was used to compile java sources |
重点就是这个 Eclipse compiler。记起来, IDEA 有内置好几种编译器,我用的 CE 版本,有两个,一个是 javac,另外一个就是 eclipse。我确实有修改过这个配置,使用 eclipse 的编译器。
2.2. javac 和 Eclipse 的区别
javac 是 Sun JDK 默认的自带编译器。
Eclipse 编译器是 Eclipse(IBM) 自己实现的编译器 Eclipse Compiler for Java(ECJ)。
Eclipse 编译器可以在运行指定的类不需要使用到那些编译有错的类时,依然可以正确运行指定的类。但是如果依赖到编译报错的类就会跑出异常。所以,在 Eclipse 编译器的配置项有一个 Proceed on errors。
还有一个区别就是,ECJ 可以增量编译,这样不用每次修改代码后,都做一次全量编译,浪费时间。
2.3. 解决问题
2.3.1. 换 compiler
既然是因为编译的时候,使用了 ECJ 的问题,那么把 compiler 切换回默认的 javac,问题解决。
2.3.2. 继续使用 ECJ
如果还是想用 ECJ 的特性,不想切换默认的 javac。那么就需要告诉 Eclipse 编译器如何去找到 lombok.jar 文件。
找到如下的标签,添加编译参数:
1 | -javaagent:/Users/MoMo/OneDrive/Tools/idea-lombok/lombok.jar |
重新全量编译项目,问题解决。