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

2022-09-03 16:31:09

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

SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jan 24, 2011 11:44:08 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

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

我对问题是什么感到非常困惑,特别是因为该项目在另一台计算机上工作正常。任何帮助与这个问题将不胜感激。

纳夫塔尔


答案 1

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

  1. 在 Eclipse 中右键单击您的项目,然后转到属性 -->部署程序集
  2. 点击“添加...”
  3. 选择“Java 构建路径条目”,然后单击“下一步”
  4. 选择“Maven Dependencies”,然后单击“完成”

答案 2

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

我建议的第一件事是,您将 Tomcat 中的日志记录级别(在 conf 文件夹中)调高为“ALL”或“DEBUG”,以便您可以确切地看到容器中发生了什么阻止找到此类。

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

  # 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 文件。


推荐