我的应用程序将部署在tcServer和WebSphere 6.1上。这个应用程序使用ehCache,因此需要slf4j作为依赖项。 因此,我将slf4j-api.jar (1.6) jar添加到war文件包中。

应用程序在tcServer中正常工作,除了以下错误:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

然而,当我在WebSphere中部署时,我得到了一个java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder。

同时伴有加载类“org.slf4j.impl.StaticMDCBinder”失败

我已经检查了两个应用服务器的类路径,没有其他slf4j jar。

有人知道这里会发生什么吗?


当前回答

这是我的5美分…

我在进行测试时也遇到了同样的问题。因此,我通过仅为测试运行时添加一个实现来解决这个问题。我在这个项目中使用gradle。

/ / https://mvnrepository.com/artifact/ch.qos.logback/logback-classic testRuntimeOnly组:'ch.qos。Logback ',名称:' Logback -classic', 版本:“1.2.3”

其他回答

如果您使用maven来进行依赖项管理,那么只需在pom.xml中添加以下依赖项即可

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

对于非maven用户 只需下载库并将其放入项目类路径中。

你可以在这里看到详细信息:http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/

我没有添加任何依赖项,我只是改变了我使用它们的方式。

预览代码

(如果您使用的是弹性搜索版本< 7.0,则取消注释此代码)

IndexRequest indexRequest = new IndexRequest(
  "twitter",
  "tweets",
  id // this is to make our consumer idempotent
).source(record.value(), XContentType.JSON);

当前代码

IndexRequest indexRequest = new IndexRequest("tweets")
  .source(record.value(), XContentType.JSON)
  .id(id); // this is to make our consumer idempotent

我使用bulkrequest,并删除了这个错误。

您需要在类路径中添加以下jar文件:slf4j-simple-1.6.2.jar。如果你没有,请下载。请参考http://www.slf4j.org/codes.html#multiple_bindings

我也犯了同样的错误。我已经在我的本地开发中配置了slf4j-api, slf4j-log4j12和log4j。所有配置都很好,但是我从mvnrepository复制的slf4j-log4j12依赖项有测试范围<范围>测试</范围>。当我把这一切都是好的。

有时愚蠢的错误会让我们崩溃;)

我在使用Java 9库的Spring-boot-2应用程序时也遇到了类似的问题。

在我的pom.xml中添加以下依赖项为我解决了这个问题:

<dependency>
    <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
    <artifactId>slf4j-maven-plugin-log</artifactId>
    <version>1.0.0</version>
</dependency>