Eclipse 4.31集成Logback 1.5.0遇SLF4J无提供者问题求助
Eclipse RCP项目SLF4J无Provider问题排查
问题现象
在Eclipse 4.31环境下,使用slf4j.api 2.0.12和ch.qos.logback.classic 1.5.0搭建RCP项目,调用日志功能时出现以下警告:
SLF4J(W): No SLF4J providers were found. SLF4J(W): Defaulting to no-operation (NOP) logger implementation SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
已参考Vogella的Eclipse RCP日志教程搭建,且已将logback-classic加入类路径,但问题仍未解决。
排查要点
1. 检查Manifest清单配置
- 确保
MANIFEST.MF中正确声明依赖:- 若用
Require-Bundle:Require-Bundle: org.slf4j.api;bundle-version="2.0.12", ch.qos.logback.classic;bundle-version="1.5.0" - 若用
Import-Package:Import-Package: org.slf4j;version="[2.0.0,3.0.0)", ch.qos.logback.classic;version="[1.5.0,2.0.0)"
- 若用
- 确认
ch.qos.logback.classic的Manifest中包含SLF4J-Provider属性,确保SLF4J能识别其为实现类。
2. 目标平台配置验证
- 检查目标平台中是否同时包含
slf4j.api和ch.qos.logback.classic的完整bundle,版本与项目依赖一致。 - 通过
Window > Preferences > Plug-in Development > Target Platform确认bundle已正常加载,无缺失或版本冲突。
3. 产品配置检查
- 在
.product文件的Dependencies标签页中,将ch.qos.logback.classic和slf4j.api添加到运行时依赖,并设置为included。 - 若用p2仓库构建,确认这两个bundle已包含在p2站点中,构建时能正确拉取。
4. 代码与类加载验证
- 确保日志实例采用SLF4J标准API获取:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyClass { private static final Logger logger = LoggerFactory.getLogger(MyClass.class); public void testLog() { logger.info("Test log message"); } } - 调试验证类加载器能否加载
ch.qos.logback.classic.spi.LogbackServiceProvider类(SLF4J 2.x通过SPI识别Provider)。
5. 冲突排查
- 检查项目中是否存在其他SLF4J Provider(如log4j-slf4j-impl),需排除冲突,仅保留logback-classic作为唯一实现。
- 确认logback-classic 1.5.0与SLF4J 2.0.12版本兼容(官方已支持,但若有自定义配置需核对)。
内容的提问来源于stack exchange,提问作者Holzmacher
相关产品推荐
相关产品推荐

