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

100*_*uns 13 java spring jsp web-applications tomcat6

我正在尝试在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和所有必需的弹簧库.

我很困惑这个问题,特别是因为该项目在另一台计算机上工作正常.任何有关此问题的帮助将受到高度赞赏.

Naftal

Tem*_*lar 40

Reticulogic的第二个建议是正确的.但是,在Eclipse Helios中,已删除"Java EE模块依赖关系"选项.Helios的修复方法如下:

  1. 在Eclipse中右键单击您的项目,然后转到Properties - > Deployment Assembly
  2. 点击"添加..."
  3. 选择"Java Build Path Entries"并单击"Next"
  4. 选择"Maven Dependencies"并单击"完成"

  • 非常感谢!多年来一直坚持这一点 - Bounty顺其自然. (3认同)

jmo*_*253 5

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" *
Run Code Online (Sandbox Code Playgroud)

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

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

 shared/lib
 lib
 webapps/yourapp/WEB-INF/lib
Run Code Online (Sandbox Code Playgroud)

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