Lombok 注释在 Intellij IDEA 下无法编译 [重复]

Posted

技术标签:

【中文标题】Lombok 注释在 Intellij IDEA 下无法编译 [重复]【英文标题】:Lombok annotations do not compile under Intellij idea [duplicate] 【发布时间】:2014-07-23 07:16:27 【问题描述】:
    我已经安装了 intellij idea 的插件 (lombok-plugin-0.8.6-13)。 将 lombok.jar 添加到类路径中 我可以在结构窗口中找到getter 和setter。 Intellij 没有显示错误。 设置 - 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

【问题讨论】:

最后,我解决了问题。设置 - 编译器 - 注释处理器 - 启用注释处理。确保已检查! 头撞墙很长一段时间后,我意识到这是因为我的项目SDK被错误地设置为Java 11,这似乎不适用于Lombok。将它设置回 Java 8 对我来说是诀窍。 除了启用注释处理之外,对我来说,我必须选中“从项目类路径获取处理器”选项而不是 Processsor 路径列表。 【参考方案1】:

为了解决问题集:

首选项(Ctrl + Alt + S) 构建、执行、部署 编译器 注释处理器 启用注释处理

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

偏好->插件 搜索“Lombok 插件” 单击浏览存储库... 选择 Lombok 插件 安装 重启 IntelliJ

【讨论】:

当我使用 Eclipse 编译器编译 intellij 中的 java 源代码时单击 Build -> Rebuild project 时,Idea lombock 注释未得到处理,并且项目有许多编译时错误。切换回 Javac 编译器,一切正常。 文件 -> 设置 -> 构建、执行、部署 -> ...如果您在 Windows 上 我遇到了相反的问题,启用了注释处理,但还没有安装插件! 也尝试更新插件。 启用注释处理后,您可能需要清理并重建您的项目。【参考方案2】:

如果您使用带有 lombok 的 Eclipse 编译器,这个设置终于对我有用了:

想法 14.1 Lo​​mbok 插件 ... / 编译器 / Java编译器 > 使用编译器:Eclipse ... / 编译器 / 注释处理器 > 启用注释处理:选中(默认配置) ... / Compiler > 其他构建过程 VM 选项:(共享构建过程 VM 选项)-javaagent:lombok.jar

最重要的部分是最后一个,我的如下所示:

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

【讨论】:

在我的 Intellij IDEA 2016.1 中,“附加构建过程 VM 选项”选项被命名为“共享构建过程 VM 选项”。【参考方案3】:

如果你在 Mac 上使用 Intellij,这个设置终于对我有用。

安装:Intellij

    转到首选项,搜索插件。 在插件搜索框中输入“Lombok”。 Lombok 是一个非捆绑插件,所以一开始不会显示。 点击“浏览”搜索非捆绑插件 应该会显示“Lombok 插件”。选择它。 点击绿色的“安装”按钮。 点击“重启 Intellij IDEA”按钮。

设置:

    启用注释处理器

    转到首选项 -> 构建、执行、部署 -> 首选项 -> 编译器 -> 注释处理器 文件 -> 其他设置 -> 默认设置 -> 编译器 -> 注释处理器

    检查 Lombok 插件是否启用

    IntelliJ IDEA->首选项->其他设置->Lombok插件->启用Lombok

    在全局库和项目依赖项中添加 Lombok jar。

    文件 --> 项目结构 --> 全局库(添加 lombok.jar)

    文件 --> 项目结构 --> 项目设置 --> 模块 --> 依赖项 Tab = check lombok

    重启 Intellij

【讨论】:

【参考方案4】:

我按照这个程序来解决类似/相同的错误。

mvn 想法:干净

mvn 想法:想法

之后我可以从 IDE intellij 和命令行进行构建。

【讨论】:

【参考方案5】:

对我来说,lombok 插件和注释处理都需要启用,没有别的。无需使用 Eclipse 和其他 -javaagent:lombok.jar 选项。

想法 14.1.3,构建 141.1010 Lo​​mbok 插件[Preference->plugins->browse repositories->搜索'lombok'->安装并重启idea。 首选项->搜索“注释”->进入注释处理器->启用注释处理。

【讨论】:

没有必要使用 Eclipse 编译器,但您可能需要考虑一些令人信服的理由。更多信息在这里:blog.dripstat.com/why-you-should-use-the-eclipse-compiler-in【参考方案6】:

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

此解决方法不需要 gradle-lombok 插件。您的build.gradle 只需要以下内容:

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

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

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

与此页面上的其他解决方案相比,此解决方法的优势:

无需注释处理! 能够使用您选择的 Java 编译器(无需 Eclipse 编译器) 不使用有问题的 gradle-lombok 插件(尽管也许其他人可以解决这个问题) 无需虚拟机选项 没有到 lombok jar 的硬编码路径

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

【讨论】:

【参考方案7】:

IDEA 2016.1:

安装lombok plugin 设置 -> 编译器 -> 注释处理器 -> 启用注释处理:选中(默认配置) 设置 -> 编译器 -> 注释处理器 -> 注释处理器添加“lombok.launch.AnnotationProcessorHider$AnnotationProcessor”

如果你使用 maven 添加到 maven-compiler-plugin 配置 -> 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>

【讨论】:

我做了你写的同样的事情,除了 maven 的事情(我现在不使用构建工具),但它仍然不起作用。 Intellij 说它找不到lombok.launch.AnnotationProcessorHider$AnnotationProcessor 处理器。 按照这些步骤,去掉Lombok注解,再放一遍。【参考方案8】:

确保满足这两个要求:

    启用注释处理,

    首选项 > 构建、执行、部署 > 编译器 > 注释处理器 > 启用注释处理

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

【讨论】:

如何确保它已启用?我可以安装或卸载它。我将如何启用它?【参考方案9】:

这个问题的高级答案都没有为我解决问题。

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

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

我正在使用 IntelliJ 2016.3.14 和 maven-3.3.9

希望我的回答对你有帮助

【讨论】:

【参考方案10】:

在 Itellij 15 CE 上,只需安装 Lombok 插件就足够了(无需额外配置)。

【讨论】:

相同的解决方案适用于 2016.1【参考方案11】:

我无法使用 javac 编译器进行此操作,并且出现同样的错误。

错误:(9, 14) java: 包 lombok 不存在

我已启用注释处理器,并尝试重建项目,使缓存/重新启动无效。没用。

不过,我确实让它与 Eclipse 编译器一起工作。我说部分是因为虽然构建成功通过,但编辑器仍然抱怨“无法解析符号”。

Idea - 15.04 社区版 龙目岛 - 1.16.6 Lombok 插件 (https://github.com/mplushnikov/lombok-intellij-plugin) - 0.9.8 JDK - 1.8.0_51

更新: 好的,我终于得到了这个工作。我的是一个 gradle 项目,lombok 被配置为自定义的“提供”配置。在 build.gradle 中添加后工作正常

idea 
 module 
     scopes.PROVIDED.plus += [configurations.provided]
    

所以,三个步骤

    从文件->设置->插件安装Lombok插件 启用注释处理器(javac 编译器也可以) 如果要将 lombok 添加为自定义配置,请确保已更新 build.gradle 或 pom.xml。

【讨论】:

以上是关于Lombok 注释在 Intellij IDEA 下无法编译 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 IntelliJ IDEA 下使用 Lombok 时无法编译项目

Lombok 添加但在 Intellij IDEA 中无法识别 getter 和 setter

IntelliJ idea安装lombok

IntelliJ IDEA15下怎么配置Lombok

lombok在IntelliJ IDEA下的使用

IntelliJ IDEA 2020.3 EAP 的Lombok问题