IDEA较新版本识别不了lombok生成的方法

本文主要讨论了在IntelliJ IDEA 2021.1.1版本中遇到的Lombok注解处理器不兼容问题。由于IntelliJ采用了新的代理方式处理ProcessingEnvironment,导致Lombok无法正常工作。为了解决这个问题,可以通过在IDE设置中添加'-Djps.track.ap.dependencies=false'参数来恢复Lombok的正确编译。同时,文章提醒这可能会禁用增量注解处理,可能影响部分编译结果的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

idea版本:

IntelliJ IDEA 2021.1.1 (Ultimate Edition)
Build #IU-211.7142.45, built on April 30, 2021

lombok版本

1.18.16

问题排查

lombok的相关issue:https://github.com/projectlombok/lombok/issues/2592

IntelliJ is now wrapping the ProcessingEnvironment in a Proxy. This lead to a problem for us at MapStruct (mapstruct/mapstruct#2215). While trying to fix that and testing with our examples I realized that our examples with Lombok are not compiling anymore.
大致意思是,IntelliJ新版本在 ProcessingEnvironement 预编译的时候是以代理的方式来执行的,不再是直接 javac方式,所有 lombok依赖的 annotation processors

解决办法

在这增加参数: -Djps.track.ap.dependencies=false

就能正常处理 lombok注解了,

同时提示

java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate.
 Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.


 

### 使用 LombokIntelliJ IDEA 2021 社区版中的指南 #### 安装 Lombok 插件 为了使 Lombok 注解能够在项目中正常工作,安装 Lombok 插件是必要的。通过插件市场可以轻松完成这一操作。 进入 `File` -> `Settings...` 或者按下快捷键 `Ctrl+Alt+S` 打开设置窗口,在左侧导航栏找到并点击 `Plugins`。在右上角的搜索框内输入 "Lombok" 并按回车键查找插件。当目标插件出现在列表里时,单击它旁边的绿色按钮来下载和安装该插件[^1]。 #### 配置 Maven/Gradle 构建工具 为了让构建过程识别Lombok 提供的功能,还需要向项目的依赖管理文件添加相应的库支持。对于采用 Maven 的项目来说: ```xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency> ``` 而对于 Gradle 用户,则应在 build.gradle 文件中加入如下配置项: ```groovy dependencies { compileOnly 'org.projectlombok:lombok:1.18.24' annotationProcessor 'org.projectlombok:lombok:1.18.24' } ``` 请注意版本号应替换为最新稳定发布的版本编号[^2]。 #### 启用注解处理功能 确保启用了编译器选项以允许使用注解处理器。这一步骤同样适用于其他任何基于注解生成源码或额外资源的任务。具体做法是在模块设置页面下的 `Build, Execution, Deployment` -> `Compiler` -> `Annotation Processors` 中勾选启用复选框[^3]。 #### 编写带有 Lombok 注解的类 一旦完成了上述准备工作之后就可以开始编写简化后的 Java 类定义了。下面给出一个简单的例子展示如何利用 @Data 和 @AllArgsConstructor 这两个常用注解快速创建实体对象。 ```java import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class User { private String name; private int age; } ``` 这段代码会自动生成 getter/setter 方法以及全参构造函数,从而减少了大量样板式的重复劳动[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值