Java+Gradle环境下Lombok的@Slf4j注解无法使用问题求助
解决Lombok @Slf4j无法使用的问题
问题根源
你遇到的两个错误本质是同一个问题:缺少SLF4J相关依赖。Lombok的@Slf4j注解会自动生成基于SLF4J规范的日志代码,但SLF4J只是日志门面接口,你需要同时引入SLF4J核心API和对应的日志实现绑定包。目前你的依赖中只添加了Log4j2的核心包,缺少SLF4J API以及SLF4J与Log4j2的桥接依赖,导致编译和运行时都找不到必要的类。
解决步骤
1. 更新build.gradle依赖配置
修改dependencies块,补充缺失的SLF4J相关依赖:
dependencies { // SLF4J核心API,@Slf4j生成的代码依赖该包 implementation 'org.slf4j:slf4j-api:2.0.7' // Log4j2核心实现包 implementation 'org.apache.logging.log4j:log4j-core:2.20.0' // SLF4J与Log4j2的桥接包,让SLF4J的调用能转发到Log4j2执行 implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.20.0' // Lombok相关依赖保持不变 compileOnly 'org.projectlombok:lombok:1.18.28' annotationProcessor 'org.projectlombok:lombok:1.18.28' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' }
说明:原配置中的
org.apache.logging.log4j:log4j:2.20.0是聚合包,包含log4j-api和log4j-core,拆分引入核心包是为了依赖更清晰,你也可以保留原聚合包,但必须补充slf4j-api和log4j-slf4j-impl。
2. 检查IDEA Lombok支持配置
确保IDEA已正确启用Lombok相关支持:
- 打开
File > Settings > Plugins,搜索并确认Lombok插件已安装且启用。 - 打开
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors,勾选Enable annotation processing。
3. 验证代码
修改依赖后,点击IDEA右侧Gradle面板的刷新按钮同步项目,然后重新运行代码。此时log.info("hello")的语法错误会消失,运行时也不会再提示org.slf4j包不存在。
4. 可选:添加Log4j2配置文件
如果运行后没有日志输出,需要在src/main/resources下添加Log4j2的配置文件(比如log4j2.xml),示例配置如下,可将日志输出到控制台:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
内容的提问来源于stack exchange,提问作者Revlis
相关产品推荐
相关产品推荐

