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

Faj*_*zny 9 java intellij-idea lombok

I've been using Lombok with IntelliJ for a while now. I have installed newest (v. 0.28) Lombok plugin, enabled annotation processing and added a Lombok dependency (v. 1.18.10) in pom.xml. It all worked well until today, when I wanted to implement the experimental @SuperBuilder.

I have a simple hierarchy:

@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;
}
Run Code Online (Sandbox Code Playgroud)

I wanted to set the fields from parent's class in child's builder, e.g.:

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

Employer.builder().a("Negative").c(-2.1).build();
Run Code Online (Sandbox Code Playgroud)

乍一看,这一切似乎都有效 - 当文件打开并且构建器正常时没有显示错误。但是在mvn clean compile 之后,我在每个 @SuperBuilder 行(即在这 3 个类中的每一个中)得到以下结果: Error:(20) java: cannot find symbol

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

Faj*_*zny 6

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

不管怎样,我只是通过在终端中运行mvn clean install才发现- 输出比 IntelliJ 中的输出要详细得多,并且它指出了这个类。在其上添加@SuperBuilder注释后编译成功。

@SuperBuilder(toBuilder=true)是使用它的正确方法。


Leo*_*hko 6

我遇到了同样的问题,添加 @SuperBuilder 到所有“基”类中解决了这个问题。

前:

abstract class Parent {
   ...
}

@SuperBuilder
class Child extends Parent {
   ...
}
Run Code Online (Sandbox Code Playgroud)

后:

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

@SuperBuilder
class Child extends Parent {
   ...
}
Run Code Online (Sandbox Code Playgroud)