协慌网

登录 贡献 社区

SLF4J:无法加载类 “org.slf4j.impl.StaticLoggerBinder”

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

有人对这里可能发生的事情有任何想法吗?

答案

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

No-Op 回退仅在 slf4j -1.6 + 时发生,因此任何早于该版本的内容都会引发异常并中止您的部署。

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

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

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

这解决了我的问题。希望它对遇到此问题的其他人有所帮助。

这是给那些从谷歌搜索来到这里的人的。

如果您使用 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>

只需将其添加到您的pom.xml 中

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.21</version>
</dependency>