gpt4 book ai didi

java - 加载所需依赖项后无法加载类 "org.slf4j.impl.StaticLoggerBinder"

转载 作者:行者123 更新时间:2023-11-30 03:21:11 26 4
gpt4 key购买 nike

我正在构建我的 Maven 项目并部署在 jetty 服务器中,我遇到了这个问题。在我的 ${jetty_home}/lib 中,我有 jcl-over-slf4j-1.7.2.jar、jul-to-slf4j-1.7.2.jar、slf4j-api-1.7.2.jar。连同我的 Maven 项目,我有

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
<scope>provided</scope>
</dependency>

在 mvn 依赖树中,对于 slf4j,我看到以下内容:

[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.2:compile
[INFO] | \- log4j:log4j:jar:1.2.17:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.2:provided (scope not updated to compile)

除此之外,我的项目还捆绑了 commons-logging-1.2.jar。现在我构建了我的 Maven 项目,如果我使用我的 Eclipse jetty 插件运行它,我没有任何问题,并且一切都工作正常。之后,我尝试将其部署在远程服务器的 jetty webapp 文件夹中,现在我明白了,

Establishing start.log on Wed Jul 08 12:46:13 PDT 2015
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.

我按照其他帖子中提到的相关步骤进行操作,但仍然无法解决此问题。请帮忙。谢谢。

最佳答案

您已将 SLF API 放入错误的类加载器中。

类加载器层次结构看起来像这样(可能有点不准确):

BootstrapClassLoader - loads Java classes
^
|
ExtClassLoader - loads some additional libs
^
|
AppClassLoader - loads Jetty and slf4j-api
^
|
WebAppClassLoader - loads your application and can load slf4j-impl

您的类会触发加载 slf4j-api 包,并导致从 WebAppClassLoader 委托(delegate)到 AppClassLoader。然后 slf4j-api 类将尝试加载 slf4j-impl 类,但只会向 AppClassLoader 请求它们。该类加载器无法委托(delegate)给您的应用程序类加载器(即图中的委托(delegate))。它只向上委托(delegate),却什么也没找到,因此出现错误。

您必须将这些库放在同一个类加载器中。在 jetty/lib 或 WAR 中。

关于java - 加载所需依赖项后无法加载类 "org.slf4j.impl.StaticLoggerBinder",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31302731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com