升级spring-kafka至2.8.0时出现org.slf4j包不存在错误求助
问题排查与解决方案
核心原因
Spring Kafka 2.8.0版本对SLF4J API的依赖范围做了调整——此前2.7.x版本默认将SLF4J API作为编译时传递依赖,而2.8.0可能将其改为runtimeOnly或者不再自动传递。Lombok的@Slf4j注解在编译阶段会生成依赖SLF4J API的代码,因此编译时classpath中必须存在SLF4J API,否则就会抛出package org.slf4j does not exist的错误。
解决方案
显式添加SLF4J API编译依赖
在build.gradle中直接声明SLF4J API的compileOnly依赖,确保编译阶段能找到该包:compileOnly 'org.slf4j:slf4j-api:1.7.36'注:版本号可根据Spring Kafka 2.8.0的兼容情况调整,也可以使用
implementation,但compileOnly更符合依赖原则(仅编译时需要,运行时由日志实现包提供)。检查依赖传递关系
执行Gradle命令查看编译类路径的依赖树,确认SLF4J API的状态:./gradlew dependencies --configuration compileClasspath | grep slf4j-api如果输出中SLF4J API的范围是
runtimeOnly或未出现,说明确实需要手动添加编译依赖。可选:升级Lombok版本
虽然Lombok 1.18.24支持Java 17,但升级到1.18.30及以上版本可以获得更好的Java 17兼容性,避免潜在的注解处理器问题:compileOnly 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok:1.18.32'
内容的提问来源于stack exchange,提问作者Billtaz
相关产品推荐
相关产品推荐

