java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener


290

我将它们包括在构建路径中

  • 所有春季图书馆
  • Apache Tomcat 7.0库

在启动过程中项目仍然失败:

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:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Jun 2, 2011 11:07:38 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener
java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)

在中org.sprintframework.web-3.1.0.M1.jar,我可以看到org.springframework.web.context.ContextLoaderListener

Google上有人说spring.jar应该包括在内,但我spring.jar在3.x发行版中看不到任何内容。

Eclipse 3.6.2
Tomcat 7

编辑:春季论坛(离线)上有人说“自动更新依赖项”应该在项目属性中检查,但我在项目属性中看不到类似的东西。


1
关闭项目,创建新的工作场所,确保POM中的依赖关系。我不得不面对这个问题,但在修正依赖项后已得到解决
MLS

您可以张贴.war / lib文件夹的内容吗?或至少是所有。* spring。* \。jar。
Simeon

即使我将以下依赖项添加到pom,我仍然遇到相同的错误。<dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> {Spring-Version} </ version> </ dependency>我所做的就像其他人建议我添加的Maven部署程序集的依赖关系。当我用其他依赖项更新pom并执行maven> update project时,错误不断出现。检查部署程序集显示我已经摆脱了Maven依赖关系。我不得不再次重做以上过程。
Tadele Ayelegn

1
解决方案适用于大多数情况。向部署程序集添加依赖项。
lokesh

Answers:


777

在Eclipse托管的Tomcat中运行spring Web应用程序时,我遇到了类似的问题。我通过在项目的Web部署程序集中添加Maven依赖关系解决了此问题。

  1. 打开项目的属性(例如,在项目浏览器中右键单击项目的名称,然后选择“属性”)。
  2. 选择“部署程序集”。
  3. 单击右边的“添加...”按钮。
  4. 从“指令类型”菜单中选择“ Java构建路径条目”,然后单击“下一步”。
  5. 从Java Build Path Entries菜单中选择“ Maven Dependencies”,然后单击“ Finish”。

您应该看到“ Maven依赖项”已添加到Web部署程序集定义中。


6
那就是你应该做的方法,日食的正确方法。
pap

18
我遇到了同样的问题。但是我在“属性”(在我的多模块Maven项目的模块中)中看不到“部署程序集”。
gtiwari333

9
这是正确的,尽管非常令人讨厌。我认为,也许应该使用m2e插件。
RickB

10
我看到Maven依赖项已添加到Web部署程序集定义中,但我不断收到错误消息。
dabadaba

10
如果Java构建路径条目不包含任何内容怎么办?我在那种情况下。
vdolez

117

使用Eclipse WDT时常会发生同样的事情。当这种情况发生在未经修改且以前可以正常工作的项目时,尤其令人沮丧。这是我在最后一种情况下要解决的问题:

  1. 停止Tomcat(如果它正在运行)
  2. 打开“服务器”视图:窗口>显示视图>其他>服务器>服务器
  3. 右键单击Tomcat服务器>清理Tomcat工作目录。
  4. 右键单击Tomcat服务器>清理
  5. 重新启动服务器

这通常可以解决您提到的问题。


3
有针对该特定情况的错误报告(bugs.eclipse.org/bugs/show_bug.cgi?id=365748)。Eclipse开发人员需要有关它的更多信息以及重现该问题的方法。
Chucky 2012年

1
好的,这是所有人的灵活解决方案,必须将此答案标记为答案。好的工作,Chepech
Java Questions

3
这实际上是解决此问题的最简单方法。谢谢Chepech!
Badal

2
使用eclipse 4.4对我没有帮助。我不得不使用Susie的方法将删除/添加部署到tomcat。执行清理时,我正在监视tomcat部署文件夹。不知道为什么清理无法清理部署文件夹。
Blessed Geek 2014年

1
部署程序集是执行此操作的正确方法,但是如果由于某些损坏或其他原因而无法正常工作,则此清理实际上会对其进行修复。
卡拉巴辛

26

您可以尝试“清洁Tomcat工作目录”,也可以尝试“清洁..”。这应该丢弃所有已发布状态并从头开始重新发布。


谢谢这个解决方案!上面接受的答案不能为我解决这个问题,但是您的答案可以。
GreenTurtle 2012年

25

我使用了IntelliJ IDEA,编译成功,但是启动Tomcat时显示:

Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

一开始,我以为JAR丢失了,但是它已经到位。

解决方案: 在右面板File > Project Structure > Artifacts中,Output Layout双击Available Elements名为like的库Maven:...,该库将移至WEB-INF/lib左窗格中。

接受并重新启动Tomcat。


这个答案与所问的问题并不完全相关,因为OP使用的是Eclipse
Adam Michalik 2015年

10
但这对我有所帮助。
udaybhaskar '16

8

这肯定是与Eclipse相关的问题。对我有用的是在Eclipse服务器选项卡中创建一个新服务器。然后在此新服务器上运行您的应用程序,它将正常工作。



7

如果上述所有内容均无效,请尝试以下方法。它为我工作。

从服务器>重新启动服务器>将项目添加到服务器>重新启动服务器中删除项目。

详细说明:

1. Right click on server > Add and Remove
2. Select your project > Remove > Finish
3. Restart your server
4. Right click on server > Add and Remove
5. Select your project > Add > Finish
6. Restart your server again.

5

我为Tomcat 7运行时配置的eclipse项目遇到了相同的问题

右键单击项目,然后转到项目属性。单击部署程序集。我注意到在编译时与用户库一起创建的spring库jar丢失了。只需添加罐子,tomcat启动期间控制台中就不会出现任何错误


5

如果您使用的是Maven,则可能尚未构建项目。首先执行a,mvn clean package然后尝试重新部署。


Eclipse 3.6.2 + Tomcat 7
emeraldhieu 2011年

4

Eclipse Luna解决方案:

  1. 右键单击Maven Web项目
  2. 点击“属性”菜单
  3. 在弹出的窗口的左侧选择“部署程序集”
  4. 点击弹出窗口右侧的“添加...”按钮
  5. 现在出现另一个弹出窗口(新装配指令)
  6. 点击“ Java构建路径条目”
  7. 点击“下一步”按钮
  8. 单击“完成”按钮,现在完全关闭“新Assemby指令”弹出窗口
  9. 现在单击“应用”按钮和“确定”按钮
  10. 运行您的Web应用程序

4

如果您使用的是IntelliJ IDEA,并在Tomcat服务器上部署应用程序,则会显示:在“文件”菜单下->选择项目结构->单击工件->选择jar,然后右键单击->放入WEB \ lib->重新启动服务器在此处输入图片说明


3

实际上这是Tomcat的问题。 只需转到项目的“ lib”文件夹,然后将所有与“ Spring”相关的jar复制到此文件夹即可。刷新您的项目,一切顺利。 由于tomcat无法找到Spring核心类,因此该问题有时仍然存在。


2

我也有同样的错误。我没有在我的POM文件中添加以下依赖项。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.1.7.RELEASE</version>
  </dependency>

但是我的项目曾经在我添加此依赖项之前就运行过。但是在某一时刻,它停止了并开始给出相同的上述错误。

如果任何人不能解决此错误,他们也可以通过此链接解决


1
<dependency> <groupId> org.springframework </ groupId> <artifactId> spring-web </ artifactId> <version> 4.1.6.RELEASE </ version> </ dependency>添加此功能有助于解决此错误。
Ashutosh S 2016年

2

我遇到过同样的问题。我通过在pom中添加spring-web依赖关系来解决此问题。确保使用具有ContextLoaderListener类扩展的spring-web jar,ContextLoader实现ServletContextListener并驻留在org.springframework.web.context包中。我用3.0.4.RELEASE


1

我尝试了

  • 项目清洁MVN
  • 清洁
  • 自动清理tomcat工作目录
  • 更新依赖

至少暂时起作用的唯一方法是将Maven依赖项添加到Web部署程序集定义中

但是,这永远不会奏效!几天后,它停止工作。我的解决方案是删除Maven依赖关系,应用更改并再次添加Maven依赖关系。

我正在使用-Eclipse Juno-嵌入式Maven-Tomcat 7


1

对于gradle用户,它可以执行以下步骤

1)在Eclipse中的“ 服务器”选项卡中停止和删除 tomcat服务器

蚀tomcat选项卡

2)从tomcat安装中清除webapp和工作目录,(参考方法:清除Tomcat的缓存并修复过时的JSP问题

$ rm -r /usr/local/AT7028/work/*
$ rm -r /usr/local/AT7028/webapps/WAR_NAME

3)使用构建工具清理和遮盖项目

$ ./gradlew clean eclipse//为mvn用户触发相应的命令,$ mvn clean package

4)在eclipse中配置新的Tomcat服务器,然后再次运行项目。


1

我也面临同样的问题...。并按照以下步骤解决:

RC(右键单击Web项目)->属性->部署程序集->添加-> Java构建路径条目->下一步->选择缺少的jar文件->下一步->完成

应用程序正在成功运行...


我有OP的错误,但是我的部署程序集中没有缺少jar文件。
Blamkin86

1

我遇到了同样的问题,并且已经按照上述步骤解决了问题。但是当我再次遇到此问题并尝试以下操作时,则没有问题,

RC(在Web项目上单击鼠标右键)->属性->部署程序集->添加-> Java构建路径条目->下一步->

单击下一步后,其只有空白窗口,其中禁用了“下一步”和“完成”选项。我现在该怎么办?


1

我遇到了同样的问题。

刚刚从配置中删除了服务器,并在通过将eclipse添加到服务器运行时环境来重新启动eclipse之后又将其重新添加。


1

对我来说,解决方法是右键单击我的webapp模块> Maven>更新项目


1

我希望最适合这种情况的一种快速解决方案是,只需删除工作空间的.metadata文件夹,然后再次导入项目。如果您尝试所有其他选项,则不能保证成功。有时上述解决方案有时会起作用,您将花费宝贵的时间来修复此配置。

有一天,我决定清洗我的工作站。我根据不同的客户将项目安排在合适的文件夹中。结果,一切都搞砸了。花了一整天后,它并没有停留在固定的工作空间中。第二天,我只是删除了工作空间的.metadata文件夹,然后再次导入了所有项目。宾果游戏全集。


1

<packaging>war</packaging>如果您正在使用Maven,请 pom.xml。在这种情况下,也许是罐装

您必须在Deployment Assembly中具有Maven库


0

使用“更新项目配置”会弄乱项目的构建路径。

修复:打开“配置构建路径...”菜单(右键单击该项目),然后修复每个源文件夹的“包含/排除”选项。那对我有用。



0

对我来说,实际的解决方案是安装“ m2e-wtp-用于WTP的Maven集成”。在这种情况下,不需要Marcelo的解决方案。


0

如果以上方法均无效,请从侦听器类中删除.class,即

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

0

这对我有用..

右键单击maven Web项目,然后单击“属性”菜单。在弹出的窗口的左侧选择“部署程序集”。在弹出的窗口的右侧单击“添加...”按钮。现在再出现一个弹出窗口(新程序集指令)单击“ Java构建路径条目”,单击“下一步”按钮,单击“完成”按钮,现在完全关闭“新Assemby指令”弹出窗口。现在,单击“应用”按钮,然后单击“确定”按钮。


0

在使用Gradle对IntelliJ项目中的Hibernate映射进行更改后,这发生了。简单地重建项目对我来说是有效的。


0

我每季度遇到几次。这次我在git diff中有一个最小的更改摘要,并在eclipse中将问题跟踪到重置的类路径(缺少我的WEB-INF / lib依赖项)。这似乎在我引入或退出父/兄弟Maven项目的任何时候都会发生。

有提及将您的spring jars添加到tomcat Web容器库中-可以,这是大多数EE服务器运行的方式。但是请注意,通过在tomcat的类加载器树中放置较高的spring,您将比战争上下文中的类加载器级别更高。我建议您将库留在每个/战争较低的类加载器中。

在日食结构项目更改后,在截断的.classpath之后,我们看到以下内容。

Dec 18, 2016 11:13:39 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class org.springframework.web.context.request.RequestContextListener
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener

我的类路径已重置,并且WEB-INF / lib依赖项已删除。

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
    <attributes>
        <attribute name="maven.pomderived" value="true"/>
        <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    </attributes>
</classpathentry>

放回去

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

一切都会好起来的。

谢谢/迈克尔


0

当我在构建路径中有lib,但在我的部署程序集中却没有lib时,我就知道了。另外,当我缺少context.xml时。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.