Lombok注解在Intellij IDEA下无法编译。

272
  1. 我已经在Intellij Idea中安装了插件(lombok-plugin-0.8.6-13)。
  2. 将lombok.jar添加到类路径中。
  3. 我可以在结构窗口中找到getter和setter方法。Intellij没有显示任何错误。
  4. 设置-Lombok插件-为lombok验证Intellij配置,它显示"IntelliJ的配置似乎没有问题"。

一切看起来都很正常。但当我编译测试时,出现了错误:找不到getXXX和setXXX方法。

我用IntelliJ打开.class文件,并发现没有setXXX和getXXX方法。

有人能告诉我原因吗?

  • 插件: lombok-plugin-0.8.6-13
  • lombok.jar: 1.14.0
  • Idea: 13.0.2 for Linux
  • JDK: 1.7.0_21

31
最后,我解决了这个问题。设置 - 编译器 - 注解处理器 - 启用注解处理。确保它已被勾选! - yurnom
2
在长时间的挣扎后,我意识到问题出在我的项目SDK错误地设置为Java 11上,这似乎与Lombok不兼容。将其设置回Java 8对我很有帮助。 - Chris Neve
1
除了启用注释处理外,对我来说,我还必须选择选项“从项目类路径获取处理器”,而不是处理器路径列表。 - Nicholas Reis
11个回答

498
为了解决这个问题集:
  • 偏好设置 (Ctrl + Alt + S)
    • 构建、执行、部署
      • 编译器
        • 注解处理器
          • 启用注解处理

请确保您已安装IntelliJ的Lombok插件!

  • 偏好设置->插件
  • 搜索"Lombok Plugin"
  • 点击"浏览存储库..."
  • 选择Lombok插件
  • 安装
  • 重启IntelliJ

7
жҜҸеҪ“жҲ‘дҪҝз”ЁEclipseзј–иҜ‘еҷЁеңЁIntellij Ideaдёӯзј–иҜ‘Javaжәҗд»Јз Ғж—¶пјҢеҪ“жҲ‘зӮ№еҮ»Build -> RebuildйЎ№зӣ®ж—¶пјҢLombockжіЁи§ЈдёҚдјҡиў«еӨ„зҗҶдё”йЎ№зӣ®дјҡеҮәзҺ°и®ёеӨҡзј–иҜ‘ж—¶й”ҷиҜҜгҖӮдҪҶжҳҜпјҢеҪ“жҲ‘еҲҮжҚўеӣһJavacзј–иҜ‘еҷЁж—¶пјҢдёҖеҲҮйғҪжӯЈеёёдәҶгҖӮ - David
4
若您使用的是Windows系统,可以通过以下路径找到设置:文件(File) -> 设置(Settings) -> 构建、执行、部署(Build, Execution, Deployment)。 - appoll
9
我遇到了相反的问题,启用了注解处理,但还没有安装插件! - Nick Grealy
1
尝试更新插件。 - Witold Kaczurba
1
一旦启用了注解处理,您可能需要清理并重新构建项目。 - Patrice
谢谢,这个加上重启解决了我的问题。 - Aditya Goel

55

如果你正在使用带有lombok的Eclipse编译器,以下设置对我最终有效:

  • IDEA 14.1
  • Lombok插件
  • ... / 编译器 / Java编译器 > 使用编译器:Eclipse
  • ... / 编译器 / 注解处理器 > 启用注解处理:选中(默认配置)
  • ... / 编译器 > 附加构建过程VM选项:(共享构建过程VM选项)-javaagent:lombok.jar

最重要的部分是最后一步,我的设置如下图所示: enter image description here

需要插件让IntelliJ编辑器能够识别getter和setter,需要javaagent才能让Eclipse编译器与lombok一起编译。


16
在我的Intellij IDEA 2016.1中,“Additional build process VM options”选项被命名为“Shared build process VM options”。 - Igor Bljahhin

36

如果您在Mac上使用Intellij,这个设置对我来说最终起作用了。

安装: Intellij

  1. 前往“首选项”,搜索插件。
  2. 在插件搜索框中键入“Lombok”。 Lombok是一个非捆绑的插件,因此一开始不会显示。
  3. 单击“浏览”以搜索非捆绑的插件。
  4. 应该会出现“Lombok插件”。 选择它。
  5. 单击绿色的“安装”按钮。
  6. 单击“重新启动Intellij IDEA”按钮。

设置:

  1. 启用注释处理器

    • 前往“首选项”-> “编译器”->“注释处理器”
    • 文件->其他设置->默认设置->编译器->注释处理器
  2. 检查是否启用Lombok插件

    • IntelliJ IDEA -> 首选项->其他设置->Lombok插件->启用Lombok
  3. 在全局库和项目依赖项中添加Lombok jar。

    • 文件->项目结构->全局库(添加lombok.jar)
  4. 文件->项目结构->项目设置->模块->依赖项选项卡=勾选lombok

  5. 重新启动Intellij


在设置中,我错过了第三步。添加了.jar路径后,它对我起作用了! - Karthik_S_A

17

我按照以下步骤解决了类似/相同的错误:

mvn idea:clean

mvn idea:idea

之后,我可以从IntelliJ IDE和命令行构建项目。


我的情况下也起作用了。 - Jhonny Perez

12

在解决这个问题上花费了太长时间后,我找到了一个简单的解决方法,可以确保IntelliJ在构建期间正确处理Lombok注解。

对于此解决方法,不需要使用gradle-lombok插件。只需要在您的build.gradle中添加以下内容:

dependencies {
    compileOnly("org.projectlombok:lombok:1.16.18")
}

解决方法是打开以下的IntelliJ设置:

  1. 打开IntelliJ首选项/设置。
  2. 导航到 Build, Execute, Deployment > Build Tools > Gradle > Runner
  3. 勾选标记为 Delegate IDE build/run actions to gradle 的复选框


相比本页面上的其他解决方案,此解决方法的优点包括:

  • 无需注释处理!
  • 可以使用您选择的Java编译器(无需Eclipse编译器)
  • 不使用有缺陷的gradle-lombok插件(尽管也许有人能够解决这个问题)
  • 无需VM选项
  • 没有固定路径到lombok jar

唯一的缺点是,IntelliJ将不再使用其自己的测试运行器。相反,测试始终通过Gradle运行。


真的。出于某种奇怪的原因,即使是ChatGPT也认为gradle-lombok插件是必要的。这应该是2023年的被接受的答案。 - Introspective

11

对我而言,需要同时启用Lombok插件和注解处理器,没有其他的需求。不需要使用Eclipse或额外的-javaagent:lombok.jar选项。

  • Idea 14.1.3,生成141.1010
  • Lombok插件[首选项->插件->浏览存储库->搜索“lombok”->安装并重启Idea。]
  • 首选项->搜索“annotation”->输入注解处理器->启用注解处理器。

1
使用Eclipse编译器并非必须,但有一些令人信服的理由值得考虑。更多信息请参见:http://blog.dripstat.com/why-you-should-use-the-eclipse-compiler-in/ - depsypher

10

IDEA 2016.1:

  • Install lombok plugin
  • Settings -> Compiler -> Annotation Processors -> Enable annotation processing: checked (default configuration)
  • Settings -> Compiler -> Annotation Processors -> Annotation Processors add "lombok.launch.AnnotationProcessorHider$AnnotationProcessor"
  • Also if you are using maven add to maven-compiler-plugin configuration -> annotationProcessors -> annotationProcessor: lombok.launch.AnnotationProcessorHider$AnnotationProcessor

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>${maven.plugin.compiler.version}</version>
      <configuration>
        <compilerVersion>${java.version}</compilerVersion>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <annotationProcessors>
          <annotationProcessor>lombok.launch.AnnotationProcessorHider$AnnotationProcessor</annotationProcessor>
        </annotationProcessors>
      </configuration>
    </plugin>
    

1
我做了你写的一样的事情,除了使用maven(我现在不使用构建工具),但它仍然无法正常工作。Intellij说它找不到lombok.launch.AnnotationProcessorHider$AnnotationProcessor处理器。 - Stefan B
完成这些步骤后,移除 Lombok 注解,然后再重新添加。 - otaviodecampos

8

请确保以下两个要求已满足:

  1. 启用注释处理器,

    Preferences > Build, Execution, Deployment > Compiler > Annotation Processors > Enable annotation processing

  2. 已为您的项目安装并启用Lombok插件。


我该如何确保它已启用?我可以安装或卸载它。我该如何启用它? - Noel Widmer

8

对于这个问题,所有高级答案都没有解决我的问题。

我通过在pom.xml文件中添加对lombok的依赖来解决了这个问题,即:

<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.16.12</version>
</dependency>

我正在使用带有maven-3.3.9的IntelliJ 2016.3.14

希望我的回答对你有帮助


4
在Intellij 15 CE上,只需安装Lombok插件即可(无需额外配置)。

相同的解决方案适用于2016.1版本。 - Amazia Gur

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