【发布时间】:2020-01-07 10:41:23
【问题描述】:
我在 IntelliJ 中使用 Lombok 已经有一段时间了。我已经安装了最新的 (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;
}
我想在子构建器中设置父类的字段,例如:
Employee.builder().a("Positive").b(1).build();
Employer.builder().a("Negative").c(-2.1).build();
乍一看似乎一切正常 - 打开文件并且构建器正常时没有显示错误。但是,在 mvn clean compile 之后,我在每个 @SuperBuilder 行(即在这 3 个类中的每一个中)都会得到以下结果:
Error:(20) java: cannot find symbol
我在这里缺少什么?我尝试更新 Lombok 插件版本并重新安装它,但没有任何成功。
【问题讨论】:
-
鉴于信息量很大,不确定这里还有多少人能够回答。如果错误是“找不到符号”,那么编译器甚至看不到注释。这是一个依赖问题,与 Lombok 无关。
-
但是您如何解释访问反编译的 SuperBuilder.class 文件的能力?这一切似乎都在那里
-
这意味着 IntelliJ 能够定位依赖关系,但它不能通过与 Maven 相同的机制工作。
-
你的 pom.xml 可能有问题。您能否添加相关部分(对 Lombok 的依赖)?
-
看起来是正确的。那个编译器错误还有什么?仅仅因为它在
@SuperBuilder这一行并不意味着它找不到注解。它也可能是生成代码中的另一个符号。
标签: java intellij-idea lombok