Lombok不生效怎么办?排查编译错误与版本兼容问题

 更新时间:2026年08月04日 15:57:21   作者:howeres  
你的Lombok在构建时总报错?可能是版本不兼容或缺少annotationProcessor,本文详解Lombok不生效的常见原因,包括IDEA编译错误、Gradle依赖配置、boolean属性isXXX问题及批量Delombok操作,帮你快速修复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

  • 添加 annotationProcessordependencies
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 注解的类, 转换为普通类,

  1. 选中包名
  2. Ctrl+Shift+A 调出 Action 面板
  3. 输入 delombok
  4. 选中 all lombok annotations

Gradle下发布源码包报错

Library source does not match the bytecode for class XXX

解决方法是改用插件方式引入 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"

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 老生常谈java中cookie的使用

    老生常谈java中cookie的使用

    下面小编就为大家带来一篇老生常谈java中cookie的使用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Java Scanner输入两个数组的方法

    Java Scanner输入两个数组的方法

    今天小编就为大家分享一篇Java Scanner输入两个数组的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Spring@Autowired与@Resource的区别有哪些

    Spring@Autowired与@Resource的区别有哪些

    这篇文章主要为大家详细介绍了@Autowired与@Resource的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • Spring AOP高级应用与源码剖析

    Spring AOP高级应用与源码剖析

    Spring AOP通过动态代理,在不修改原有业务逻辑的情况下增强横切逻辑,如权限校验、日志记录、事务控制和性能监测,本文介绍Spring AOP高级应用与源码剖析,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • java中设计模式(多例)的实例详解

    java中设计模式(多例)的实例详解

    这篇文章主要介绍了java中设计模式(多例)的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Spring Boot 分库分表策略示例展示

    Spring Boot 分库分表策略示例展示

    分库分表是为了应对大规模数据和高并发请求,提高系统的性能和可扩展性,以下是如何在 Spring Boot 中实现分库分表的详细策略,感兴趣的朋友一起看看吧
    2024-08-08
  • 详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法

    这篇文章主要介绍了详解MyBatis-Plus updateById方法更新不了空字符串/null解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring创建Bean的流程分享

    Spring创建Bean的流程分享

    Spring创建Bean流程主要包括实例化、属性赋值、初始化和销毁四个阶段,实例化通过new关键字进行,属性赋值通过BeanDefinition获取并注入,处理Aware接口以获取Spring容器资源,调用InitializingBean和init-method进行初始化,最后通过DisposableBean和destory-method进行销毁
    2025-11-11
  • vue+springboot项目上传部署tomcat的方法实现

    vue+springboot项目上传部署tomcat的方法实现

    本文主要介绍了vue+springboot项目上传部署tomcat的方法实现,包括环境准备、配置调整以及部署步骤,文中通过图文及示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • SpringBoot使用RestTemplate如何通过http请求将文件下载到本地

    SpringBoot使用RestTemplate如何通过http请求将文件下载到本地

    文章介绍了如何通过编写代码批量下载文件,解决了没有提供批量下载接口的问题,首先筛选出需要下载的文件ID,然后通过后端代码发起HTTP请求,将下载的资源写入本地文件中,总结了实现方式和注意事项,希望能为类似任务提供参考
    2025-02-02

最新评论