找不到 Log4jConfigListener -- 上下文无法启动

新手上路,请多包涵

我正在尝试在 Eclipse 上设置一个 Web 应用程序。我正在使用 Tomcat 6.0 和 jdk 1.6.0_23。出于某种原因,我收到此错误:

严重:配置类 org.springframework.web.util.Log4jConfigListener 的应用程序侦听器时出错
java.lang.ClassNotFoundException:org.springframework.web.util.Log4jConfigListener
 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 在 org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 在 org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 在 org.apache.catalina.core.StandardService.start(StandardService.java:519)
 在 org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 在 org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 在 java.lang.reflect.Method.invoke(Method.java:597)
 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2011 年 1 月 24 日上午 11:44:08 org.apache.catalina.core.StandardContext listenerStart
严重:配置类 org.springframework.web.context.ContextLoaderListener 的应用程序侦听器时出错
java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener
 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 在 org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 在 org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 在 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 在 org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 在 org.apache.catalina.core.StandardService.start(StandardService.java:519)
 在 org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 在 org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 在 java.lang.reflect.Method.invoke(Method.java:597)
 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

我检查了是否所有库都已添加到构建路径中,一切似乎都是正确的。包括 log4j-1.2.15.jar 和所有必要的 spring 库。

我对问题出在哪里感到非常困惑,尤其是因为该项目在另一台计算机上运行良好。对此问题的任何帮助将不胜感激。

萘酚

原文由 1000Suns 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

org.springframework.web.util.Log4jConfigListener 类绝对不在您的类路径中。

我建议的第一件事是将 Tomcat 中的日志记录级别(在 conf 文件夹中)调高为“ALL”或“DEBUG”,这样您就可以准确地看到容器中正在发生的事情阻止了此类从被发现。

其次,如果在 linux/mac 上,我建议您通过运行 grep 检查您的 JAR 文件是否缺少类文件:

   # run at the root of your lib folders:
  grep -ri "org.springframework.web.util.Log4jConfigListener" *

上面的命令将返回包含该包的所有 JAR 文件。隔离 JAR 文件后,您可以进一步排除故障。

第三,确保你没有任何冲突。您的类路径中存在多个版本的 Log4j 会造成严重破坏。如果有 2 个,系统应该如何知道要加载 哪个 org.springframework.web.util.Log4jConfigListener 包? Tomcat 有 3 个不同的类路径文件夹:

  shared/lib
 lib
 webapps/yourapp/WEB-INF/lib

确保这些文件夹中只有一个 log4j JAR 文件。

原文由 jamesmortensen 发布,翻译遵循 CC BY-SA 2.5 许可协议

Reticulogic 的第二个建议是正确的。但是,在 Eclipse Helios 中,“Java EE 模块依赖项”选项已被删除。 Helios 的修复如下:

  1. 在 Eclipse 中右键单击您的项目并转到 Properties–>Deployment Assembly
  2. 单击“添加…”
  3. 选择“Java Build Path Entries”并点击“Next”
  4. 选择“Maven 依赖项”并单击“完成”

原文由 Templar 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题