Slf4j:已找到slf4j-api依赖性,但未找到提供程序

问题描述 投票:0回答:2

我使用龙目岛。前一段时间,在构建项目时,编译器开始发出以下消息:

已找到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不再支持的机制。请阅读常见问题解答条目SLF4J 1.8.0版中有哪些更改?对于进一步重要详细信息

如果您负责打包应用程序并且不在乎关于日志记录,然后将slf4j-nop.jar放在您的类路径上应用程序将摆脱此警告消息。注意嵌入库或框架之类的组件不应声明依赖于任何SLF4J提供程序,但仅依赖slf4j-api。当一个库在SLF4J提供程序上声明了编译时依赖性,将该提供者强加给最终用户,从而否定了SLF4J的目的。

我不知道如何正确执行。如果您有经验,请向我解释该如何做。

java slf4j
2个回答
0
投票

它显示出我需要在每个模块的build.gradle或root gradle中具有经典的logback来预防警告。


0
投票

tutorialspoint中所述:

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

这意味着您必须在依赖于SLF4J本身的依赖关系的基础上,在类路径上提供具体的Java日志记录librairie(带有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>test</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>test</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>test</scope>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.