IntelliJ IDEA无法看到Lombok生成的代码

时间:2015-05-01 00:51:41

标签: java intellij-idea junit4 lombok intellij-lombok-plugin

我有一个使用lombok的基于Gradle的项目。我已将此项目导入IntelliJ IDEA 14.1(使用导入外部模型导入方法)。我可以在Gradle中没有问题地运行JUnit4单元测试,但IntelliJ似乎在看到Lombok生成的Getters时遇到了问题。这使我无法在IDEA中运行测试。

为了确保它不是设置问题,我创建了Very simple project并确认在简单测试项目中出现了同样的问题。

我的版本: Gradle:gradle-2.3-all通过Gradle包装纸
Intellij IDEA:IU-141.713
Lombok插件:0.9.2

我在这里缺少什么?

更新看不到我的意思并不是物理上不可见。我的意思是:

/home/meeee/workspace/junit-lombok-idea/lib/src/main/java/com/example/jumbokea/Main.java
Error:(10, 11) java: cannot find symbol
  symbol:   method setIntField(int)
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) java: cannot find symbol
  symbol:   method getIntField()
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
  required: no arguments
  found: float,com.example.jumbokea.SomeClass
  reason: actual and formal argument lists differ in length
Error:(16, 46) java: cannot find symbol
  symbol:   method getSomeFloat()
  location: variable ac of type com.example.jumbokea.AnotherClass
Error:(17, 43) java: cannot find symbol
  symbol:   method getSomeClass()
  location: variable ac of type com.example.jumbokea.AnotherClass

反编译的类显示了getter和setter,但是当我让IntelliJ运行'app'或Unit测试时,我遇到了这些错误。

Getters and setters are there, but not there???

10 个答案:

答案 0 :(得分:68)

您需要启用注释预处理器。 See documentation here

此外,如果尚未安装lombok插件,则应安装

答案 1 :(得分:8)

我设法通过以下方式解决了这个问题:

答案 2 :(得分:4)

在我的情况下,在通过工具箱更新IntelliJ后发生了问题。

“启用注释处理”标志已关闭(尽管从以前的IntelliJ版本导入设置),因此我将其打开。 重启,清理,构建后,这并没有解决问题。

然而,重新安装lombok插件有帮助!

编辑:似乎是lombok插件与IntelliJ 2018.1的兼容性问题,IntelliJ用户需要将插件升级到0.17。

Lombok插件更新日志摘录:

  

Lombok支持插件已更新至v0.17:    - 修正(#465):修复插件与IntelliJ 2018.1的兼容性

答案 3 :(得分:3)

可以在build文件夹中看到。

enter image description here

答案 4 :(得分:1)

启用注释处理器并安装lombok插件后,如果在lombok生成的方法上仍然出现“找不到符号错误”,请尝试检查gradle配置(位于

中)

首选项->构建,执行,部署-> Gradle,

如果您使用的是本地gradle分发,请更改为使用默认的gradle包装器

当我的项目的gradle包装器为4.10.2但我的本地gradle版本为5.1.1时,出现此错误,并且在将其更改为使用默认的gradle包装器后解决了该问题。

答案 5 :(得分:0)

对于Lombok,IntelliJ允许您搜索变量的用法,其中还包括getter和setter。只需点击变量名称和option/alt + f7

这适用于Intellij 2016和Lombok插件0.13.16。我不确定旧版本。

答案 6 :(得分:0)

如另一个答案中所述,请安装Lombok插件并启用注释处理器。在IntelliJ中按两次SHIFT,然后在搜索框中键入Enable annotation processing。之后,在框上打勾并重新启动IDE。

enter image description here

enter image description here

答案 7 :(得分:0)

在pom.xml中添加以下依赖项以及其他答案中提到的其他解决方案。

ionic cordova build ios --prod

答案 8 :(得分:0)

尝试单击lombok导入,然后输入alt + enter,然后会出现简短列表,选择添加maven依赖项,然后在屏幕的右下角将显示应启用maven的图标,然后单击自动启用。对我来说,它奏效了。

答案 9 :(得分:0)

即使添加了注释处理器并添加了lombok依赖关系,也可能无法解决问题。这是因为与模型相关的类文件必须位于目标文件夹

运行全新安装,以生成带有lombok代码生成的更改的模型的类文件。