7

据我了解,Lombok 使用 Java 的注释处理器来生成其他方法。

使用 Maven 3.5 它可以完美运行,无需添加任何额外配置,只需向 Lombok 添加依赖项并添加一些注释,如@Getter, @Setter.

但是,如果我在 IntelliJ IDEA 2018.2 中打开此项目,生成的 getter/setter 的所有用法都会突出显示为错误。我打开了注释处理,我尝试在 IntelliJ 中构建项目或在 Maven 中构建然后在 IntelliJ 中使用,但它仍然需要 Lombok 插件以避免错误错误。

这是某种错误吗?工作流程错误?或者 Lombok 不仅使用注释处理器,还使用了一些我不知道的其他东西,这就是 IntelliJ + javac 无法弄清楚如何处理它的原因?这会很奇怪,因为 javac 本身会编译这些文件而没有错误

我知道有很多问题“我在使用 Lombok 时遇到错误”以及“使用插件”之类的答案。我不是在问我是否应该使用插件,而是为什么我应该使用它,为什么 IntelliJ 无法在没有插件的情况下处理它而 javac 确实如此

4

3 回答 3

14

IntelliJ 的代码分析引擎不使用 javac 或运行注释处理器。相反,IntelliJ 使用自己的 Java 解析器和引用解析逻辑,并构建自己的代码模型。Lombok 插件扩展了代码模型以提供有关 Lombok 注释处理器生成的声明的信息。

于 2018-08-30T09:09:17.680 回答
2

这是因为 IDEA 语法高亮使用了内部 Java 解析器。如果 IDEA 只使用 javac,那么它就无法在您键入时突出显示语法错误。它还对错误代码提供了更好的提示,因此每个 Java 构造、功能或注释都必须由 JetBrains 团队实现,或者像这种情况下有插件。

注释处理选项仅用于构建通过 完成的项目javac,但不适用于语法突出显示。

于 2018-08-30T09:10:14.547 回答
1

Ale IDE 使用 lombok 插件,无论是它intelij-idea还是eclipse. javac可以很好地使用它 - 但请记住,例如,当您使用mvn clean package. 然后,当您拥有 IDE 时——它的工作方式不同——代码不会像构建任务中那样处理。

该插件让 IDE 知道这个注释是什么以及它在不需要javac.

于 2018-08-30T09:11:25.677 回答