我正在尝试在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
答案 0 :(得分:39)
Reticulogic的第二个建议是正确的。但是,在Eclipse Helios中,已删除“Java EE模块依赖关系”选项。 Helios的修复方法如下:
答案 1 :(得分:4)
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文件。
答案 2 :(得分:3)
如果你正在使用maven和eclipse
1)查看您的Web项目.classpath文件。如果你有一个类路径条目“org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER”,那么确保该属性也存在。
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
2)如果这不起作用,那么在eclipse中右键单击您的Web项目,然后转到Properties - &gt; JavaEE Module dependencies。确保选中Maven Dependencies框。
然后保存,构建部署yada yada
答案 3 :(得分:3)
一个简单的解决方案是清理Eclipse中的Tomcat目录。它对我有用。
答案 4 :(得分:2)
迁移到 log4j2?
不要忘记检查您的 webapp/WEB-INF/web.xml(Web 应用程序部署描述符)以获取无关的事件侦听器定义。
答案 5 :(得分:0)
如果你使用log4j2,你可以在
中找到这些类org.apache.logging.log4j.web.*
包。