Lombok不生效怎么办?排查编译错误与版本兼容问题
Lombok不生效
现象
在 build/rebuild 时,提示 Lombok 不生效:
java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled.
或
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.
第二种显示,附加代码的注解会失效,通过设置属性 -Djps.track.ap.dependencies 来启用或禁用(通常的解决办法是设为 false)
原因
使用的lombok版本和idea版本不兼容。idea新版本是使用代理的方式来进行编译。(IDE层面的问题,通常是不推荐修改的)
解决办法
升级lombok版本为最新版~
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>多模块项目的所有 lombok 都应该进行升级
原始类型boolean下isXXX不生效
原始类型的布尔类型中的 get() 方法是由 is 开头的 (Java Beans 规定)
- 在 Bean 类中, 不要使用原始类型
- 不要用 is 开头, 设置属性值
@Data
public class TestBody {
private boolean flag;
private boolean flag0;
private boolean isFlag1; // 会生成 isFlag1() 方法, 变相忽略掉了 is 前缀
private Boolean flag2;
public boolean isFlag0() {
return flag0;
}
public void setFlag0(boolean flag0) {
this.flag0 = flag0;
}
}
Gradle 下 Lombok 不生效
Gradle 相比 Maven 需要再补充一个依赖项, 叫 annotationProcessor
- 添加
annotationProcessor到dependencies中
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32' // add
testCompileOnly 'org.projectlombok:lombok:1.18.32' // 测试的需要单独加入
testAnnotationProcessor 'org.projectlombok:lombok:1.18.32' // add 测试的需要单独加入
}
批量 Delombok
操作方法比较隐蔽, 记录一下
在 idea 中可以选中包名 (路径), 然后将该包下的所有使用 Lombok 注解的类, 转换为普通类,
- 选中包名
Ctrl+Shift+A调出 Action 面板- 输入 delombok
- 选中 all lombok annotations

Gradle下发布源码包报错
Library source does not match the bytecode for class XXX
![]()
解决方法是改用插件方式引入 lombok (之前是依赖方式)
- 使用 lombok 官方插件 https://plugins.gradle.org/plugin/io.freefair.lombok
plugins {
id "io.freefair.lombok" version "8.6"
}
(如果找不到依赖, 使用下面的方式加镜像)
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "io.freefair.gradle:lombok-plugin:8.6"
}
}
apply plugin: "io.freefair.lombok"
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring@Autowired与@Resource的区别有哪些
这篇文章主要为大家详细介绍了@Autowired与@Resource的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助2022-02-02
详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法
这篇文章主要介绍了详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-09-09
vue+springboot项目上传部署tomcat的方法实现
本文主要介绍了vue+springboot项目上传部署tomcat的方法实现,包括环境准备、配置调整以及部署步骤,文中通过图文及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-01-01
SpringBoot使用RestTemplate如何通过http请求将文件下载到本地
文章介绍了如何通过编写代码批量下载文件,解决了没有提供批量下载接口的问题,首先筛选出需要下载的文件ID,然后通过后端代码发起HTTP请求,将下载的资源写入本地文件中,总结了实现方式和注意事项,希望能为类似任务提供参考2025-02-02


最新评论