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

Java 找不到Log4jConfigListener--上下文无法启动,java,spring,jsp,web-applications,tomcat6,Java,Spring,Jsp,Web Applications,Tomcat6,我正在尝试在Eclipse上设置一个web应用程序。我使用的是Tomcat6.0和JDK1.6.023。 出于某种原因,我会出现以下错误: SEVERE: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigL

我正在尝试在Eclipse上设置一个web应用程序。我使用的是Tomcat6.0和JDK1.6.023。 出于某种原因,我会出现以下错误:

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) 严重:配置类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库

我很困惑这个问题是什么,特别是因为这个项目在另一台计算机上运行得很好。对此问题的任何帮助都将不胜感激


Naftal

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将造成严重破坏。如果有两个包,系统如何知道要加载哪个org.springframework.web.util.Log4jConfigListener包?Tomcat有3个不同的类路径文件夹:

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

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

如果您使用的是maven和eclipse

1) 查看您的web项目.classpath文件。如果您有一个类路径条目“org.maven.ide.eclipse.MAVEN2\u classpath\u 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项目,并转到属性-->JavaEE模块依赖项。确保选中Maven依赖项框


然后保存、构建、部署yada yada

网图学的第二个建议是正确的。但是,在EclipseHelios中,“JavaEE模块依赖项”选项已被删除。Helios的修复程序如下所示:

  • 在Eclipse中右键单击项目并转到属性-->部署程序集
  • 单击“添加…”
  • 选择“Java构建路径条目”并单击“下一步”
  • 选择“Maven依赖项”并单击“完成”

  • 一个简单的解决方案是在Eclipse中清理Tomcat目录。它对我有用。

    如果使用log4j2,您可以在中找到这些类

    org.apache.logging.log4j.web.*
    
    包裹

    迁移到log4j2


    不要忘记检查您的webapp/WEB-INF/WEB.xml(WEB应用程序部署描述符)以查找无关的事件侦听器定义。

    您能列出您包含的库吗?我正在使用Hibernate,所以我有Hibernate库,如Hibernate-annotations.jar、hibernate3.jar等。但是根据stacktrace,似乎我缺少一个