Lombok 的@SuperBuilder - 错误 java: 找不到符号

Lombok's @SuperBuilder - Error java: cannot find symbol

我将 Lombok 与 IntelliJ 结合使用已有一段时间了。我已经安装了最新的 (v. 0.28) Lombok 插件,启用了注释处理并在 pom.xml 中添加了 Lombok 依赖项 (v. 1.18.10)。一切都很好,直到今天,当我想实现实验性的 @SuperBuilder.

我有一个简单的层次结构:

@SuperBuilder
public class User {
   private String a;
}

@SuperBuilder
public class Employee extends User {
   private int b;
}

@SuperBuilder
public class Employer extends User {
   private double c;
}

我想在 child 的构建器中设置来自 parent 的 class 的字段,例如:

Employee.builder().a("Positive").b(1).build();

Employer.builder().a("Negative").c(-2.1).build();

乍一看似乎一切正常 - 打开文件时没有显示任何错误并且生成器正常。然而,在 mvn clean compile 之后,我在每个 @SuperBuilder 行(即在这 3 个 classes 中的每一个)上得到以下结果: Error:(20) java: cannot find symbol

我在这里错过了什么?我尝试更新 Lombok 插件版本并重新安装它,但没有任何成功。

好的,我找到了。我错过了用户 class 正在扩展我们应用程序中每个实体扩展的基本 class。看起来很明显,但我没有注意到...

无论如何,我只通过 运行 终端中的 mvn clean install 发现 - 输出比 IntelliJ 中的输出要冗长得多,它指出了这一点class。添加@SuperBuilder注解后编译成功

但是@SuperBuilder(toBuilder=true)才是正确的使用方式。

我遇到了同样的问题,@SuperBuilder添加到所有"base"类 解决了问题。

之前:

abstract class Parent {
   ...
}

@SuperBuilder
class Child extends Parent {
   ...
}

之后:

@SuperBuilder              // <- addded
abstract class Parent {
   ...
}

@SuperBuilder
class Child extends Parent {
   ...
}