DEBUG:Lombok 失效

DEBUG:Lombok 失效

问题描述

基于 Spring Boot 的项目中,编译时显示找不到 log 属性。查看对应的 class 类,Lombok 正常在编译时生成 log 属性。

同时存在另一个问题,使用@Getter注解,但实际使用中该注解并没有生效,体现为对应类型转化为 JSON 字符串时,因为没有任何 Getter 方法,导致抛出异常或生成空的 JSON 字符串(具体视不同的 JSON 工具而定)。

问题排查

可能是 Lombok 版本过低的问题,使用更高版本的 Lombok:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.38</version>
    <scope>provided</scope>
</dependency>

可能是 IDE 版本过低的问题,升级 Idea 到 24.1.X。

升级方法可以阅读这篇文章

确保 Idea 已经安装了 Lombok 插件,且 enabled:

image-20250520135642213

确保编译器注解处理相关设置正确:

image-20250520135803419

检查 JVM 版本是否最新版:

image-20250520140157257

这里我的 VM options 没有配置任何额外参数:

image-20250520140028252

问题解决

经过上面的排查,问题依然存在,最后通过以下方式解决。

使用以下命令重新生成 idea 相关配置文件:

mvn idea:idea

清理 Idea 缓存:

image-20250520140510218

image-20250520140539806

问题解决。

如果你已经在 IntelliJ IDEA 中安装了 Lombok 插件,并且添加了 `@Slf4j` 注解,但是仍然无法直接使用 `log.debug()` 等日志方法,可能是以下几个原因导致的: --- ### 可能的原因及解决办法 #### 1. **Lombok依赖未正确引入** - 检查项目是否正确地引入了 Lombok 的 Maven 或 Gradle 依赖。 ```xml <!-- 如果是Maven项目 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.26</version> <!-- 版本号可以根据需求调整 --> <scope>provided</scope> </dependency> ``` 或者如果是 Gradle 项目: ```gradle // 如果是Gradle项目 implementation 'org.projectlombok:lombak:1.18.26' ``` - 解决方案:确认项目的构建文件中已包含正确的版本并刷新依赖。 #### 2. **IDEA 缓存问题** - IDE缓存可能导致注解处理失效。尝试清理和重建项目。 步骤: 1. 菜单栏选择 **File -> Invalidate Caches / Restart**。 2. 执行完成后重启 IDEA 并重新编译项目。 #### 3. **Lombok插件未启用或配置错误** - 确保 Lombok 插件已在 IDEA 中正常启用。 步骤: 1. 进入设置菜单 **Settings -> Plugins**,搜索 "Lombok" 确认其状态为开启。 2. 去到 **Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors**,勾选“Enable annotation processing”。 #### 4. **缺少日志框架的支持** - `@Slf4j` 提供的日志功能需要底层支持 SLF4J 日志库以及绑定的具体实现(如 Logback)。如果没有正确导入这些依赖,虽然代码可以编写出来,但运行时会抛出异常。 需要在 pom.xml (对于Maven) 添加类似下面内容: ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> <!-- 根据实际环境选择适合版本 --> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.32</version> <!-- 同样根据实际情况修改 --> </dependency> ``` #### 5. **检查包范围和其他冲突因素** - 若所在 Java 文件位于某些特殊区域(例如 test 包下),而 lombok 放置规则限制了作用域,则也会影响效果;另外注意是否有其他同名变量覆盖掉自动生成 logger 实例的情况发生。 完成上述排查之后再试一次即可解决问题! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值