IntelliJ IDEA 看不到 Lombok 生成的代码

IntelliJ IDEA cannot see Lombok generated code

我有一个使用 lombok 的基于 Gradle 的项目。我已将此项目导入 IntelliJ IDEA 14.1(使用 Import External Model 导入方法)。我可以 运行 在 Gradle 中毫无问题地进行 JUnit4 单元测试,但 IntelliJ 似乎无法看到 Lombok 生成的 Getters。这使我无法 运行 在 IDEA 中进行测试。

为确保这不是设置问题,我创建了一个 Very simple project 并确认在简单测试项目中出现了同样的问题。

我的版本: Gradle:gradle-2.3-全部通过 Gradle 包装器
Intellij IDEA:IU-141.713
龙目岛插件:0.9.2

我在这里错过了什么?

更新 看不到 我不是说物理上看不到。我的意思是:

/home/meeee/workspace/junit-lombok-idea/lib/src/main/java/com/example/jumbokea/Main.java
Error:(10, 11) java: cannot find symbol
  symbol:   method setIntField(int)
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) java: cannot find symbol
  symbol:   method getIntField()
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
  required: no arguments
  found: float,com.example.jumbokea.SomeClass
  reason: actual and formal argument lists differ in length
Error:(16, 46) java: cannot find symbol
  symbol:   method getSomeFloat()
  location: variable ac of type com.example.jumbokea.AnotherClass
Error:(17, 43) java: cannot find symbol
  symbol:   method getSomeClass()
  location: variable ac of type com.example.jumbokea.AnotherClass

反编译的 类 显示了 getter 和 setter,但是当我将 IntelliJ 用于 运行 'app' 或单元测试时,我遇到了这些错误。

build文件夹中可以看到

您需要启用注释预处理器。 See documentation here.

此外,如果还没有安装 lombok 插件,您应该安装它

我通过执行以下操作设法解决了这个问题:

  • 安装 IDEA Lombok 插件
  • 启用注释处理see documentation
  • 在您的系统上安装最新的 Maven 并配置 IntelliJ 以使用它(相对于捆绑的 Maven)see documentation

对于 Lombok,IntelliJ 允许您搜索变量的用法,其中还包括 getter 和 setter。只需单击变量名称和 option/alt + f7.

这适用于 Intellij 2016 和 Lombok 插件 0.13.16。我不确定旧版本。

在我的例子中,问题发生在通过工具箱更新 IntelliJ 之后。

"Enable annotation processing" 标志被关闭(尽管从以前的 IntelliJ 版本导入设置),所以我打开它。 这在重启、清理、构建后没有解决问题。

但是,重新安装 lombok 插件很有帮助!

编辑:似乎是 lombok 插件与 IntelliJ 2018.1 的兼容性问题,IntelliJ 用户需要将插件升级到 0.17。

Lombok 插件变更日志摘录:

Lombok support plugin updated to v0.17: - Fixed (#465): Fix plugin compatibility with IntelliJ 2018.1

启用注释处理器并安装 lombok 插件后,如果在 lombok 生成的方法上仍然得到 "can't find symbol error",请尝试检查 gradle 配置,它位于

首选项 -> 构建、执行、部署 -> Gradle、

如果您使用的是本地 gradle 分发,请更改为 使用默认 gradle 包装器

当我项目的gradle包装器是4.10.2但我的本地gradle版本是5.1.1时我得到这个错误,我将它更改为使用默认[=21]后解决了这个问题=]包装器。

如其他答案所述,请安装 Lombok 插件并启用注释处理器。在 IntelliJ 中按双 SHIFT 并在搜索框中键入 Enable annotation processing。之后,勾选方框并重新启动 IDE。

在 pom.xml 中添加以下依赖项以及其他答案中提到的其他解决方案。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
    <scope>provided</scope>
</dependency>

试试点击lombok import,然后按alt+enter,会出现短列表,选择add maven dependency,然后屏幕右下角会出现应该启用maven的图标,点击自动启用.对我来说它有效。

即使添加注释处理器并添加 lombok 依赖项也可能无法解决问题。这是因为与模型相关的 class 文件需要位于目标文件夹

运行 全新安装 为带有 lombok 代码生成更改的模型生成 class 文件。