我正在尝试在 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 许可协议
org.springframework.web.util.Log4jConfigListener 类绝对不在您的类路径中。
我建议的第一件事是将 Tomcat 中的日志记录级别(在 conf 文件夹中)调高为“ALL”或“DEBUG”,这样您就可以准确地看到容器中正在发生的事情阻止了此类从被发现。
其次,如果在 linux/mac 上,我建议您通过运行 grep 检查您的 JAR 文件是否缺少类文件:
上面的命令将返回包含该包的所有 JAR 文件。隔离 JAR 文件后,您可以进一步排除故障。
第三,确保你没有任何冲突。您的类路径中存在多个版本的 Log4j 会造成严重破坏。如果有 2 个,系统应该如何知道要加载 哪个 org.springframework.web.util.Log4jConfigListener 包? Tomcat 有 3 个不同的类路径文件夹:
确保这些文件夹中只有一个 log4j JAR 文件。