You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse项目运行时classpath下的slf4j未被加载 报LoggerFactory类不存在错误

slf4j引入ClassNotFoundException问题排查

我在项目中引入slf4j一直未成功,已经将slf4j-api-1.7.32.jar和slf4j-jdk14-1.7.32.jar添加到了classpath中,但无论怎么尝试都会抛出java.lang.ClassNotFoundException: org.slf4j.LoggerFactory错误。

报错的起始部分如下:

Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload$WebAppClassLoaderExtension.findClass(JettyLauncher.java:354)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:366)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337)
    ...

(如果需要我可以提供更多报错信息,但编译器截断了后续内容)

该项目基于Eclipse开发,我已经尝试过以下操作:

  • 将依赖库放在classpath最前面
  • 将依赖库放在classpath最后面
  • 重启Eclipse
  • 重新构建项目
  • 更换slf4j版本

以上操作都没有解决问题。
但奇怪的是,使用完全相同的依赖库,我编写的JUnit测试可以正常运行。
今天早上同事发现将这两个slf4j依赖库添加到war/WEB-INF/lib目录下可以解决问题,但这不是可行的长期解决方案。

最新进展

我已经有了新的排查进展,将以下配置添加到jetty-web.xml中即可解决该问题:

<Set name="systemClasses">
    <Array type="java.lang.String">
        <!-- we from jetty WebAppContext source code ...-->
        <Item>java.</Item>
        <Item>javax.servlet.</Item>
        <Item>javax.xml.</Item>
        <Item>org.mortbay.</Item>
        <Item>org.xml.</Item>
        <Item>org.w3c.</Item>
        <Item>org.apache.commons.logging.</Item>
        <Item>org.apache.log4j.</Item>
        <!-- and ... added slf4j -->
        <Item>org.slf4j.</Item>
    </Array>
</Set>

目前我还需要调整部署脚本的相关配置,欢迎大家补充更多解决方案。


内容的提问来源于stack exchange,提问作者BespokeChaplain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:24:02