我的
pom.xml
仅包含一个对SLF4J的引用:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.5.10</version>
</dependency>
我收到此错误:
SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。
SLF4J:默认为无操作(NOP)记录器实现 SLF4J:
请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder 了解更多信息 详细信息。
我检查了该 URL,确实它提供了一种解决方案:“放置一个(且仅一个)slf4j-nop.jar、slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic。在类路径上运行 jar 应该可以解决问题。”
我的问题是:哪个类路径?
.classpath
? (我想我尝试过这个但没有帮助)我在here上找到了很多关于这个主题的帖子,但他们都引用了相同的答案:“将......放在类路径”。
哪个类路径?
ONE 且仅 ONE 放入您的 pom.xml 中。这取决于您选择使用什么实现。您在 pom.xml 中添加的每个依赖项都会自动添加到类路径中。只要使用Eclipse就不需要修改系统的%CLASSPATH%吗?
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version></version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version></version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version></version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version></version>
<scope>compile</scope>
</dependency>
最后但并非最不重要的一点是,您将遇到错误 SLF4J: 无法加载类“org.slf4j.impl.StaticLoggerBinder”。
Eclipse Juno 和 Indigo 在使用捆绑的 maven 版本(m2e)时,不会抑制消息 SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。此行为从 m2e 版本 1.1.0.20120530-0009 及更高版本开始出现。
尽管这被指示为错误,但您的日志将正常保存。在修复此错误之前,突出显示的错误将仍然存在。有关此内容的更多信息,请访问
m2e 支持网站。
为了抑制此消息,当前可用的解决方案是使用外部 Maven 版本而不是 Eclipse 的捆绑版本。您可以在下面的问题中找到有关此解决方案以及有关此错误的更多详细信息。
Maven
来管理我的依赖项。就我而言,我收到此错误的原因是因为我的系统中的类路径上有多个
slf4j-simple
jar。 SLF4J 文档 指出:
将 slf4j-nop.jar slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar 或 logback-classic.jar 中的一个解决方案:(且仅一个)放置在类路径上应该可以解决问题。
.m3
中的副本之外的所有副本:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.2</version>
</dependency>
如果您还使用 Intellij,则需要检查 ch.qos.logback 是否已提取到输出根目录。
gradle
,请在 build.gradle.kts 中添加以下依赖项
dependencies {
implementation("ch.qos.logback:logback-classic:1.2.11")
}