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

同时伴有加载类“org.slf4j.impl.StaticMDCBinder”失败

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

有人知道这里会发生什么吗?


当前回答

根据SLF4J官方文档

加载org.slf4j.impl.StaticLoggerBinder类失败 时报告此警告消息 org.slf4j.impl。无法装入StaticLoggerBinder类 内存。当找不到合适的SLF4J绑定时就会发生这种情况 在类路径上。放置一个(且只有一个)slf4j-nop.jar文件, Slf4j-simple.jar、slf4j-log4j12.jar、slf4j-jdk14.jar或 类路径上的Logback-classic.jar应该可以解决这个问题。

只需将这个jar和slf4j api.jar一起添加到类路径中就可以完成工作。 祝你好运

其他回答

我也遇到过类似的问题,通过以下方法解决了问题:

文件->项目结构… 模块->依赖项 从Maven ->搜索:slf4j.nop 单击最新版本-> Apply

您需要在类路径中添加以下jar文件:slf4j-simple-1.6.2.jar。如果你没有,请下载。请参考http://www.slf4j.org/codes.html#multiple_bindings

在Websphere案例中,您有一个较老版本的slf4j-api.jar, 1.4.x。或1.5。X躺在某个地方。您在tcServer上观察到的行为,即故障转移到NOP,发生在slf4j 1.6.0及更高版本上。确保在所有平台上使用slf4j-api-1.6.x.jar,并且在类路径中没有放置slf4j-api的旧版本。

我添加了这个依赖来解决这个问题:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25

作为jar包含和纯maven解决方案的替代方案,您可以使用gradle从maven中包含它。

版本为1.7.25的示例

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

把它放在构建的依赖项中。gradle文件。