SLF4J: 未能加载类 “org.slf4j.impl.StaticLoggerBinder”

2022-08-31 04:03:18

我的应用程序将同时部署在 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

还伴有Failed to load class "org.slf4j.impl.StaticMDCBinder"

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

有没有人知道这里可能发生了什么?


答案 1

我在 WebSphere 6.1 上遇到了同样的问题。正如Ceki所指出的,WebSphere正在使用大量的jar,其中一个指向旧版本的slf4j。

No-Op 回退仅发生在 slf4j -1.6+ 中,因此任何早于此值的备份都将引发异常并停止部署。

SLf4J站点中有一个文档可以解决此问题。我遵循了这一点,并将其添加到我的应用程序中,以及我已经拥有的申请。slf4j-simple-1.6.1.jarslf4j-api-1.6.1.jar

如果您使用 Maven,请添加以下依赖项,它是最新版本的 slf4j${slf4j.version}

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
</dependency>

这解决了我的问题。


答案 2

这是为那些从谷歌搜索来到这里的人准备的。

如果您使用maven,只需添加以下内容

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

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>

推荐