为了账号安全,请及时绑定邮箱和手机立即绑定

Slf4j:找到 slf4j-api 依赖,但没有找到提供程序

Slf4j:找到 slf4j-api 依赖,但没有找到提供程序

斯蒂芬大帝 2022-06-15 15:57:07
我用龙目岛。前段时间在构建项目时,编译器开始发出以下消息:找到 slf4j-api 依赖项,但未找到提供程序。您的意思是添加 slf4j-simple 吗?请参阅https://www.slf4j.org/codes.html#noProviders 。如果你点击链接,会有一个相当模糊的评论:当在类路径上找不到 SLF4J 提供程序时,会报告此警告(即不是错误)消息。将 slf4j-nop.jar slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个(也是唯一一个)放在类路径上应该可以解决问题。请注意,这些提供程序必须针对 slf4j-api 1.8 或更高版本。在没有提供者的情况下,SLF4J 将默认为无操作 (NOP) 记录器提供者。请注意 slf4j-api 版本 1.8.x 及更高版本使用 ServiceLoader 机制。早期版本依赖于 slf4j-api 不再支持的静态绑定器机制。请阅读 FAQ 条目 SLF4J 版本 1.8.0 有哪些变化?了解更多重要细节。如果您负责打包应用程序并且不关心日志记录,那么将 slf4j-nop.jar 放在应用程序的类路径中将消除此警告消息。请注意,诸如库或框架之类的嵌入式组件不应声明对任何 SLF4J 提供程序的依赖,而应仅依赖于 slf4j-api。当一个库声明对 SLF4J 提供者的编译时依赖时,它将该提供者强加给最终用户,从而否定了 SLF4J 的目的。我不知道如何正确地做到这一点。如果你有经验,请告诉我怎么做。
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

如教程点所述:


SLF4J 代表 Java 的简单日志记录外观。它提供了所有日志框架的简单抽象。它使用户能够使用单一依赖项使用任何日志记录框架,例如 Log4j、Logback、JUL (java.util.logging) 等。


这意味着您必须在 SLF4J 本身的依赖项之上在您的类路径上提供一个具体的 java 日志库(Maven 示例):


<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->

<dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-api</artifactId>

    <version>2.0.0-alpha0</version>

</dependency>

您还需要指定对首选日志库的依赖关系。例如:


对于标准 jdk1.4 日志记录:


 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-jdk14 -->

<dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-jdk14</artifactId>

    <version>2.0.0-alpha0</version>

    <scope>runtime</scope>

</dependency>  

对于slf4j-简单日志记录:


<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->

<dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-simple</artifactId>

    <version>2.0.0-alpha0</version>

    <scope>runtime</scope>

</dependency>

对于log4j 日志记录:


<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->

<dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>slf4j-log4j12</artifactId>

    <version>2.0.0-alpha0</version>

    <scope>runtime</scope>

</dependency>


查看完整回答
反对 回复 2022-06-15
?
www说

TA贡献1775条经验 获得超8个赞

请参阅此页面:http ://www.slf4j.org/codes.html#noProviders

您可以添加以下任一依赖项: 在类路径上放置 slf4j-nop.jar slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个(并且只有一个)应该解决这个问题

我使用了来自https://mvnrepository.com/artifact/org.slf4j/log4j-over-slf4j的“slf4j-simple”maven 依赖项


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 305 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信