Lombok的@Builder注解在IntelliJ中无法识别

12
我更新了IntelliJ IDEA到版本2018.2.7,但Lombok的@Builder注解不再被识别。该项目已经使用了Lombok注解,在之前的(2017...)IntelliJ版本中运行良好。只有@Builder无法正常工作。我正在使用Lombok版本1.14.4和Java 11。
问题类似于这个问题:Lombok not working with Intellij ,但那里提供的解决方案对我的项目不适用,因为我的项目没有子模块,且唯一的pom.xml正在引用正确的项目。
该项目启用了Lombok插件和注解处理。

Lombok plugin config Annotation processing config

项目的 POM 文件中配置版本号:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <lombok.version>1.14.4</lombok.version>
        <hibernate-jpa-2.1-api.version>1.0.0.Final</hibernate-jpa-2.1-api.version>
        <assertj-core.version>3.8.0</assertj-core.version>
</properties>

代码级别的错误信息是: 无法解析符号 @Builder。 如果可能,我希望保留Lombok和IntelliJ的版本。

Error message


允许在Intellij Idea中使用注解处理器。 - Sambit
如果可能的话,你能否将Intellij Idea更新到最新版本? - Sambit
注解处理器已启用。 - Laguh
5个回答

8

更新你的Lombok版本。

因为从Lombok v1.16.0开始,@Builder支持@Singular并被提升到了主要的Lombok包中。

来源

我已经完成了翻译。

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
            <scope>provided</scope>
            <optional>true</optional>
        </dependency>

而且没有那个问题


2
我正在使用lombok 1.18.0和IntelliJ无法识别由@Singular生成的方法,该方法在构造函数上定义(而不是在属性上)。 - emeraldhieu
@emeraldhieu 你之前在Idea中添加了Lombok插件吗? - Dred
1
当然可以,https://plugins.jetbrains.com/plugin/6317-lombok 这是最新版本。虽然任何其他注释都被识别了,但是 Builder 构造函数上的 Singular 却不能工作。 - emeraldhieu
2
你解决了吗?@Builder在我的IntelliJ上之前一直很好用,突然间就不行了。我卸载并重新安装了Lombok插件...所有问题都解决了 :) 我使用的是1.18.16版本的Lombok和最新的IntelliJ社区版插件。 - ThrowableException
这对我解决了问题,我还发现它与Lombok 1.18一起使用也有效。 - Jason D

5

我没有在pom.xml文件中指定版本号,结果默认获取了最新版本(1.18.8,在外部库中看到)

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

Class.builder() 对我来说无法使用,但在安装插件(https://github.com/mplushnikov/lombok-intellij-plugin) 后就可以了。

不需要额外的配置. :)


2

在我的情况下,这是版本问题。老实说,我降级到版本1并重新同步Maven存储库:

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

0

这让我想到你的Maven没有从中央仓库拉取依赖。

以下是您可以尝试的事项列表:

  1. 验证所需的Lombok依赖项是否出现在中央存储库中。
  2. 验证所需的Lombok依赖项是否出现在本地.m2中。
  3. 重新索引Maven项目;确保自动导入已打开。
  4. 检查左侧项目选项卡中的外部库,以确保Lombok出现。
  5. 如果右侧的Maven选项卡中有任何红色,请关闭项目并重新打开。

如果可用,IntelliJ将找到它。 如果IntelliJ找不到它,则很可能不可用。


0

升级到 Lombok 1.18 帮助解决了问题,但导致某些生成的类上显示“未找到构造函数”的问题。

我不得不在项目的根目录中创建一个空的 lombok.config 文件,其中包含:

lombok.anyConstructor.addConstructorProperties=true

只需将这行代码添加进去,然后像以前一样构建即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接