已导入slf4j-api和slf4j-simple仍报No SLF4J providers were found如何解决
问题根因&解决方案
- 不需要通过Guice绑定SLF4J provider。SLF4J的实现加载基于Java SPI机制,会自动扫描classpath下的provider实现,和Guice的依赖注入逻辑无关。
- 你当前报错的核心原因是
slf4j-simple的依赖范围配置错误:testImplementation限定该依赖仅在单元测试运行的classpath中生效,直接运行main方法时不会被加载,因此运行时还是找不到SLF4J的实现。
修改build.gradle的依赖配置即可解决:将slf4j-simple的范围从testImplementation替换为implementation或者runtimeOnly(如果仅需运行时生效、不需要编译期依赖):
dependencies { ... implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.0-alpha1' // 替换原testImplementation配置 runtimeOnly group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.0-alpha1' }
修改完成后刷新Gradle依赖,重新运行main方法即可消除报错。
内容的提问来源于stack exchange,提问作者Snookums
相关产品推荐
相关产品推荐

