Lombok @Builder not working in lombok-1.16.18 java:cannot find symbol builderclass

tec*_*esh 5 java lombok

@Builder
public class ProcessorLombokBO {
    private String panel;
    private String motherBoard;
    private String ram;
    private String hardDisk;
}

public static void main(String[] args) {
    ProcessorLombokBO processorLombokBO =
                    new ProcessorLombokBO.ProcessorLombokBOBuilder()
                    .panel("Brown")
                    .hardDisk("SanDisk 256GB")
                    .ram("4GB")
                    .motherBoard("Intel")
                    .build();
    System.out.println(processorLombokBO);
}
Run Code Online (Sandbox Code Playgroud)

I am trying to implemenent @Builder in a POJO, but it gives the below error when I execute the main method.

java: cannot find symbol symbol: class ProcessorLombokBOBuilder

Did I miss something?

dan*_*rob 5

我遇到了同样的问题,发现 IntelliJ 中禁用了 @Builder 支持:

Intellij 2018.3 Lombok 插件设置

  • @DoctorParameter我找不到这个设置 - 对于Lombok,我只看到“启用lombok版本警告”复选框而没有其他内容。 (10认同)
  • 你能告诉我在哪里可以找到这个设置吗,我在我的里面找不到它。谢谢 (3认同)

小智 5

如果您在 Maven 项目中使用mapstruct-processor插件,则会影响该builder方法。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.4.2.Final</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 正是我的问题,谢谢你的想法。 (2认同)

Mic*_*ath 3

编辑:尝试使您的内部 ProcessorLombokBO 类静态。您不能在内部非静态类上使用 Builder,正如您的示例中的编译错误在我的 IDE (Eclipse) 中所暗示的那样

方法构建器不能声明为静态;静态方法只能在静态或顶级类型中声明

原因是@Builder生成一个内部静态类(ProcessorLombokBOBuilder 类)并添加一个静态方法builder(),根据规范,只有在外部类也是静态的情况下才可能这样做,因为否则您需要一个封闭实例来引用 Builder 类,这与静态类型的概念。

原始帖子:通常您通过以下方式实例化您的构建器

ProcessorLombokBO.builder()
Run Code Online (Sandbox Code Playgroud)

  • 我在 1.16.18 中遇到了同样的问题 - `builder()` 方法在代码中的任何地方都不可见。我已将 Lombok 降级到 1.16.16 并且 `builder()` 按预期工作。奇怪的是,在我再次升级到 1.16.18 后,一切正常 - 也许这是 Intellij 中某些缓存的问题? (3认同)