当提供程序处于依赖关系时,未找到 SLF4J 提供程序

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

我有控制台java应用程序,它是用Maven构建的。这是 pom.xml 中的重要片段:

<dependencies>
    <dependency>
        <groupId>org.apache.sshd</groupId>
        <artifactId>sshd-sftp</artifactId>
        <version>2.13.2</version>
    </dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.12</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>2.0.12</version>
</dependency>

sshd-sftp 需要 slf4j-api,所以我不能只删除 2 个最新的依赖项。

当我运行控制台应用程序时,我收到消息

SLF4J(W):未找到 SLF4J 提供程序。 SLF4J(W):默认为无操作(NOP)记录器实现 SLF4J(W):请参阅 https://www.slf4j.org/codes.html#noProviders 了解更多详细信息。

虽然 slf4j-nop 提供程序处于依赖关系中。

我错过了什么?

更新:我只需要没有关于缺少提供者的消息。我知道 System.setProperty("slf4j.internal.verbosity", "ERROR"); 的方法,并且它有效,但这种方法不适合我的情况......

更新2:我已经从这里尝试了所有maven - 找到了slf4j-api依赖项,但没有找到提供者

java maven slf4j
1个回答
0
投票

文档中不是很清楚,

slf4j-nop
没有做你想要的。文档的链接解释了解决方案

将众多可用提供程序中的一个(且仅一个)放置在类路径上,例如 slf4j-nop.jar、slf4j-simple.jar、slf4j-reload4j.jar、slf4j-jdk14.jar 或 logback-classic.jar 将解决问题。

解决方案是添加这些日志记录库之一并将它们配置为不记录日志。如果您选择 logback,此配置将禁用所有日志记录:

<configuration>
  <root level="OFF">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.