我的应用程序将同时部署在 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。
有谁知道这里可能会发生什么?
原文由 DJ180 发布,翻译遵循 CC BY-SA 4.0 许可协议
我对 WebSphere 6.1 有同样的问题。正如 Ceki 所指出的,WebSphere 正在使用大量的 jar,其中一个指向旧版本的 slf4j。
No-Op 回退只发生在 slf4j -1.6+ 上,所以任何比这更早的东西都会抛出异常并停止你的部署。
SLf4J 站点 中有一个文档可以解决此问题。我跟着它添加了---
slf4j-api-1.6.1.jar
以及我已经拥有的slf4j-simple-1.6.1.jar
到我的应用程序中。如果你使用Maven,添加以下依赖,其中
${slf4j.version}
是slf4j 的最新版本这解决了我的问题。