我的应用程序将同时部署在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。
java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder
还伴随着 Failed to load class "org.slf4j.impl.StaticMDCBinder"
Failed to load class "org.slf4j.impl.StaticMDCBinder"
我已经检查了两个应用服务器的类路径,没有其他的slf4j jar。
有谁知道这里可能会发生什么?
我对WebSphere 6.1有同样的问题。正如Ceki所指出的,WebSphere正在使用大量的jars,其中之一是指向较旧版本的slf4j。
仅当slf4j -1.6+时才会发生No-Op后备,因此任何早于该版本的内容都会引发异常并中止你的部署。
SLf4J站点中有一个文档可解决此问题。我遵循了这一点,并将其添加slf4j-simple-1.6.1.jar到我的应用程序中slf4j-api-1.6.1.jar。
slf4j-simple-1.6.1.jar
slf4j-api-1.6.1.jar
这解决了我的问题。希望它对遇到此问题的其他人有所帮助。