IntelliJ IDEA 看不到 Lombok 生成的代码
IntelliJ IDEA cannot see Lombok generated code
我有一个使用 lombok 的基于 Gradle 的项目。我已将此项目导入 IntelliJ IDEA 14.1(使用 Import External Model 导入方法)。我可以 运行 在 Gradle 中毫无问题地进行 JUnit4 单元测试,但 IntelliJ 似乎无法看到 Lombok 生成的 Getters。这使我无法 运行 在 IDEA 中进行测试。
为确保这不是设置问题,我创建了一个 Very simple project 并确认在简单测试项目中出现了同样的问题。
我的版本:
Gradle:gradle-2.3-全部通过 Gradle 包装器
Intellij IDEA:IU-141.713
龙目岛插件: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' 或单元测试时,我遇到了这些错误。
build文件夹中可以看到
您需要启用注释预处理器。
See documentation here.
此外,如果还没有安装 lombok 插件,您应该安装它
我通过执行以下操作设法解决了这个问题:
- 安装 IDEA Lombok 插件
- 启用注释处理see documentation
- 在您的系统上安装最新的 Maven 并配置 IntelliJ 以使用它(相对于捆绑的 Maven)see documentation
对于 Lombok,IntelliJ 允许您搜索变量的用法,其中还包括 getter 和 setter。只需单击变量名称和 option/alt + f7
.
这适用于 Intellij 2016 和 Lombok 插件 0.13.16。我不确定旧版本。
在我的例子中,问题发生在通过工具箱更新 IntelliJ 之后。
"Enable annotation processing" 标志被关闭(尽管从以前的 IntelliJ 版本导入设置),所以我打开它。
这在重启、清理、构建后没有解决问题。
但是,重新安装 lombok 插件很有帮助!
编辑:似乎是 lombok 插件与 IntelliJ 2018.1 的兼容性问题,IntelliJ 用户需要将插件升级到 0.17。
Lombok 插件变更日志摘录:
Lombok support plugin updated to v0.17:
- Fixed (#465): Fix plugin compatibility with IntelliJ 2018.1
启用注释处理器并安装 lombok 插件后,如果在 lombok 生成的方法上仍然得到 "can't find symbol error",请尝试检查 gradle 配置,它位于
首选项 -> 构建、执行、部署 -> Gradle、
如果您使用的是本地 gradle 分发,请更改为 使用默认 gradle 包装器 。
当我项目的gradle包装器是4.10.2但我的本地gradle版本是5.1.1时我得到这个错误,我将它更改为使用默认[=21]后解决了这个问题=]包装器。
如其他答案所述,请安装 Lombok
插件并启用注释处理器。在 IntelliJ 中按双 SHIFT
并在搜索框中键入 Enable annotation processing
。之后,勾选方框并重新启动 IDE。
在 pom.xml 中添加以下依赖项以及其他答案中提到的其他解决方案。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
试试点击lombok import,然后按alt+enter,会出现短列表,选择add maven dependency,然后屏幕右下角会出现应该启用maven的图标,点击自动启用.对我来说它有效。
即使添加注释处理器并添加 lombok 依赖项也可能无法解决问题。这是因为与模型相关的 class 文件需要位于目标文件夹
中
运行 全新安装 为带有 lombok 代码生成更改的模型生成 class 文件。
我有一个使用 lombok 的基于 Gradle 的项目。我已将此项目导入 IntelliJ IDEA 14.1(使用 Import External Model 导入方法)。我可以 运行 在 Gradle 中毫无问题地进行 JUnit4 单元测试,但 IntelliJ 似乎无法看到 Lombok 生成的 Getters。这使我无法 运行 在 IDEA 中进行测试。
为确保这不是设置问题,我创建了一个 Very simple project 并确认在简单测试项目中出现了同样的问题。
我的版本:
Gradle:gradle-2.3-全部通过 Gradle 包装器
Intellij IDEA:IU-141.713
龙目岛插件: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' 或单元测试时,我遇到了这些错误。
build文件夹中可以看到
您需要启用注释预处理器。 See documentation here.
此外,如果还没有安装 lombok 插件,您应该安装它
我通过执行以下操作设法解决了这个问题:
- 安装 IDEA Lombok 插件
- 启用注释处理see documentation
- 在您的系统上安装最新的 Maven 并配置 IntelliJ 以使用它(相对于捆绑的 Maven)see documentation
对于 Lombok,IntelliJ 允许您搜索变量的用法,其中还包括 getter 和 setter。只需单击变量名称和 option/alt + f7
.
这适用于 Intellij 2016 和 Lombok 插件 0.13.16。我不确定旧版本。
在我的例子中,问题发生在通过工具箱更新 IntelliJ 之后。
"Enable annotation processing" 标志被关闭(尽管从以前的 IntelliJ 版本导入设置),所以我打开它。 这在重启、清理、构建后没有解决问题。
但是,重新安装 lombok 插件很有帮助!
编辑:似乎是 lombok 插件与 IntelliJ 2018.1 的兼容性问题,IntelliJ 用户需要将插件升级到 0.17。
Lombok 插件变更日志摘录:
Lombok support plugin updated to v0.17: - Fixed (#465): Fix plugin compatibility with IntelliJ 2018.1
启用注释处理器并安装 lombok 插件后,如果在 lombok 生成的方法上仍然得到 "can't find symbol error",请尝试检查 gradle 配置,它位于
首选项 -> 构建、执行、部署 -> Gradle、
如果您使用的是本地 gradle 分发,请更改为 使用默认 gradle 包装器 。
当我项目的gradle包装器是4.10.2但我的本地gradle版本是5.1.1时我得到这个错误,我将它更改为使用默认[=21]后解决了这个问题=]包装器。
如其他答案所述,请安装 Lombok
插件并启用注释处理器。在 IntelliJ 中按双 SHIFT
并在搜索框中键入 Enable annotation processing
。之后,勾选方框并重新启动 IDE。
在 pom.xml 中添加以下依赖项以及其他答案中提到的其他解决方案。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
试试点击lombok import,然后按alt+enter,会出现短列表,选择add maven dependency,然后屏幕右下角会出现应该启用maven的图标,点击自动启用.对我来说它有效。
即使添加注释处理器并添加 lombok 依赖项也可能无法解决问题。这是因为与模型相关的 class 文件需要位于目标文件夹
中运行 全新安装 为带有 lombok 代码生成更改的模型生成 class 文件。