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