java slf 4j:找到slf 4j-api依赖项,但未找到提供程序

zqdjd7g9  于 2023-02-02  发布在  Java
关注(0)|答案(3)|浏览(229)

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

ecbunoof

ecbunoof1#

tutorialspoint中所述:
SLF 4J代表Simple Logging Facade for Java。它提供了所有日志框架的简单抽象。它使用户能够使用单一依赖关系使用任何日志框架,如Log4j、Logback、JUL(java.util.logging)等。
这意味着您必须在SLF 4J本身的依赖项之上的类路径上提供一个具体的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>

对于slf 4j-简单日志记录

<!-- 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>
omqzjyyz

omqzjyyz2#

参考本页: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中的“slf 4j-simple”maven依赖项

monwx1rj

monwx1rj3#

这可能是由于slf4J API的版本和您正在使用的。尝试像这样更改版本。

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>

相关问题