解决 IDEA 使用 eclipse 编译器 lombok 不生效问题

之前自己一直在用 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
2
3
4
5
1. Go to File > Settings > Plugins
2. Click on Browse repositories...
3. Search for Lombok Plugin
4. Click on Install plugin
5. Restart IntelliJ IDEA

You can also check out Setting up Lombok with Eclipse and IntelliJ, a blog article on baeldung.

1.3. 修改 IDEA 配置

打开项目的 Annotation Processing
idea-annotation-process

1.4. Maven 项目

如果项目是 Maven 项目,需要在 pom.xml 添加 lombok 的依赖:

1
2
3
4
5
6
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<scope>provided</scope>
</dependency>

1.5. 重启

然后重启 IDEA,然后美滋滋的等待着下幸福生活的降临。。。。开心。。。。

But。。。
But。。。
But。。。

1.6. 重新全量编译项目

打开 IDEA, Build -> Rebuild Project。

残忍的现实:
idea-lombok-eclipse-error

2. 错误解决

2.1. 分析

安装步骤,我都是按照文档做的,项目为什么还是报错啊?关键是 IDEA 的 编辑器 不报错那么就说明我们的插件安装是成功的,而且,编写代码的自动提示也是有的:
idea-lombok-tip

那就是说在实际编译的时候,项目没有找到 lombok 的依赖库,奇怪了??

仔细看上面 Rebuild 输出的日志有一行:

1
Information:Eclipse compiler 4.10 was used to compile java sources

重点就是这个 Eclipse compiler。记起来, IDEA 有内置好几种编译器,我用的 CE 版本,有两个,一个是 javac,另外一个就是 eclipse。我确实有修改过这个配置,使用 eclipse 的编译器。
idea-compiler-list

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

idea-ecj-compile-args

重新全量编译项目,问题解决。

Just for my love !!