我的应用程序将部署在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。
有人知道这里会发生什么吗?
他们的官网给出了解决方案:
Failed to load class org.slf4j.impl.StaticLoggerBinder
This warning message is reported when the
org.slf4j.impl.StaticLoggerBinder class could not be loaded into
memory. This happens when no appropriate SLF4J binding could be found
on the class path. Placing one (and only one) of slf4j-nop.jar
slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or
logback-classic.jar on the class path should solve the problem. SINCE
1.6.0 As of SLF4J version 1.6, in the absence of a binding, SLF4J will default to a no-operation (NOP) logger implementation. If you are
responsible for packaging an application and do not care about
logging, then placing slf4j-nop.jar on the class path of your
application will get rid of this warning message. Note that embedded
components such as libraries or frameworks should not declare a
dependency on any SLF4J binding but only depend on slf4j-api. When a
library declares a compile-time dependency on a SLF4J binding, it
imposes that binding on the end-user, thus negating SLF4J's purpose.
解决方案:我已经添加到我的项目中使用intellij的maven研究,我选择了slf4j-jdk14.jar。
当我得到以下错误时,我陷入了这个问题:
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.
当我在我的库中使用slf4j-api-1.7.5.jar。
尽管我尝试了整个建议的补充jar,如slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5,但错误消息仍然存在。当我将slf4j-jdk14-1.7.5.jar添加到java库中时,这个问题最终得到了解决。
在http://www.slf4j.org/download.html上获得整个slf4j包
这里有相当多的答案建议向maven pom文件添加slf4j-simple依赖项。您可能需要检查最新的版本。
在https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
您将找到SLF4J简单绑定的最新版本。选择一个最适合你的版本(2021-07年的1.7.32仍然是2021-10年的稳定版本),并将其包含到你的pom.xml中。
为了您的方便,这里显示了一些依赖项-但当您阅读本文时,它们可能不是最新的!
2021-08测试版
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.0-alpha5</version>
</dependency>
2019年2月的测试版
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.8.0-beta4</version>
</dependency>
稳定版2021-07
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.32</version>
</dependency>
由于下面的评论,我删除了范围测试部分。