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

6mzjoqzu  于 2022-12-07  发布在  其他
关注(0)|答案(7)|浏览(255)

我尝试在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已包含在内,并且包含所有必要的spring库。
我很困惑到底是什么问题,特别是因为这个项目在另一台电脑上工作得很好。任何关于这个问题的帮助都将受到高度赞赏。
纳夫塔尔

hl0ma9xz

hl0ma9xz1#

Reticulogic的第二个建议是正确的。但是,在Eclipse Helios中,“Java EE模块依赖关系”选项已被删除。Helios的修复如下:
1.在Eclipse中右键单击您的项目,然后转到属性--〉部署程序集
1.单击“添加...”
1.选择“Java构建路径条目”,然后单击“下一步”
1.选择“Maven依赖项”,然后单击“完成”

bnlyeluc

bnlyeluc2#

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

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

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

u1ehiz5o

u1ehiz5o3#

一个简单的解决方案是清理Eclipse中的Tomcat目录。

rslzwgfq

rslzwgfq4#

如果您使用的是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--〉JavaEE Module dependencies。确保选中了Maven Dependencies框。
然后保存、构建、部署等等

gmxoilav

gmxoilav5#

是否迁移到log4j 2?
不要忘记检查webapp/WEB-INF/web.xml(Web应用程序部署描述符)中是否有无关的事件侦听器定义。

rvpgvaaj

rvpgvaaj6#

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

org.apache.logging.log4j.web.*

Package 。

q3qa4bjr

q3qa4bjr7#

正如你可以从类名org.springframework.web.util.Log4jConfigListener中看到的,它是spring框架的一部分。并且它从spring 4.2.1开始就被废弃了。所以检查你的spring版本。

相关问题