304

我将这些包含在构建路径中:

  • 所有 Spring 库
  • 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

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

Eclipse 3.6.2
雄猫 7

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

4

34 回答 34

806

在 Eclipse 管理的 tomcat 中运行 Spring Web 应用程序时,我遇到了类似的问题。我通过在项目的 Web 部署程序集中添加 Maven 依赖项解决了这个问题。

  1. 打开项目的属性(例如,在项目浏览器中右键单击项目名称并选择“属性”)。
  2. 选择“部署程序集”。
  3. 单击右边距的“添加...”按钮。
  4. 从 Directive Type 菜单中选择“Java Build Path Entries”,然后单击“Next”。
  5. 从 Java Build Path Entries 菜单中选择“Maven Dependencies”,然后单击“Finish”。

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

于 2011-11-14T21:19:22.237 回答
123

在使用 Eclipse WDT 时,我不时会发生同样的事情。当这种情况发生在未经修改且以前工作的项目上时,它特别令人沮丧。这就是我在最后一个场景中修复它的方法:

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

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

于 2012-09-05T21:41:23.570 回答
27

我用的是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。

于 2015-12-29T11:58:09.160 回答
26

您可以尝试“清理 Tomcat 工作目录”或简单地“清理..”。这应该丢弃所有已发布的状态并从头开始重新发布。

于 2012-04-16T06:21:08.550 回答
8

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

于 2012-12-12T11:12:22.213 回答
7

您必须至少使用3.2.8.RELEASEspring-core 的版本。

对于 Maven,请在您的pom.xml:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.2.8.RELEASE</version>
</dependency>

来源:http ://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/cglib/core/SpringNamingPolicy.html ,自 3.2.8 起。

于 2014-09-01T20:14:02.987 回答
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.
于 2014-09-02T20:51:54.150 回答
6

如果您使用的是 Maven,那么该项目可能尚未构建。首先做一个mvn clean package然后尝试重新部署。

于 2011-06-02T06:06:15.463 回答
6

对于为 Tomcat 7 运行时配置的 Eclipse 项目,我遇到了同样的问题

右键单击项目并转到项目属性。单击部署程序集。我注意到我在编译期间使用用户库创建的 spring 库 jar 丢失了。只需添加罐子,在tomcat启动期间您应该不会在控制台中看到任何错误

于 2012-10-07T18:47:08.130 回答
5

Eclipse Luna 的解决方案:

  1. 右键单击maven web项目
  2. 点击“属性”菜单
  3. 在弹出窗口的左侧选择“部署程序集”
  4. 单击弹出窗口右侧的“添加...”按钮
  5. 现在又出现一个弹出窗口(新装配指令)
  6. 单击“Java 构建路径条目”
  7. 单击“下一步”按钮
  8. 单击“完成”按钮,现在自动关闭 New Assemby Directivies 弹出窗口
  9. 现在单击“应用”按钮和确定按钮
  10. 运行您的网络应用程序
于 2014-12-19T05:57:28.943 回答
4

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

于 2017-10-27T20:07:39.403 回答
3

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

于 2015-12-05T06:19:45.710 回答
2

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

于 2015-05-05T13:23:14.307 回答
2

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

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

但是我的项目甚至在我添加这个依赖项之前就已经运行了。但在某一时刻,它停止并开始给出同样的上述错误。

如果有人无法解决此错误,他们也可以通过此链接解决

于 2015-11-03T11:32:05.630 回答
2

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

于 2017-08-27T08:45:38.203 回答
1

我试过了

  • 项目清洁 mvn
  • 干净的
  • 自动清理tomcat工作目录
  • 更新依赖

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

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

我正在使用-eclipse Juno-嵌入式maven-tomcat 7

于 2013-01-25T10:50:45.737 回答
1

对于 gradle 用户,它适用于以下步骤

1)在eclipse中的Servers选项卡中停止并删除tomcat服务器

eclipse tomcat 选项卡

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

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

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

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

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

于 2013-08-28T11:08:13.500 回答
1

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

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

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

于 2013-12-08T16:37:02.923 回答
1

我有同样的问题,我已经使用上面提到的步骤解决了它。但是当我再次遇到这个问题时没有,我尝试以下,

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

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

于 2015-01-27T05:18:20.273 回答
1

我遇到了同样的问题。

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

于 2015-05-02T17:58:28.723 回答
1

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

有一天我决定清理我的工作站。我根据不同的客户将项目安排到合适的文件夹中。结果一切都乱了套。花了一整天后,它并没有最终进入一个固定的工作空间。第二天我干脆把工作空间的.metadata文件夹删掉了,又把所有的项目都导入了。宾果游戏一切就绪。

于 2016-07-05T10:59:47.090 回答
1

<packaging>war</packaging>如果您使用 Maven,请放入您的 pom.xml。在那种情况下,也许它是用罐子包装的

部署程序集中必须有 Maven 库

于 2016-07-15T13:45:56.200 回答
0

使用“更新项目配置”搞砸了项目的构建路径。

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

于 2013-07-27T01:31:55.620 回答
0

在很多情况下,这是 java facet 问题,jdk 或 jre 或 jsp 版本与 maven 项目面不同。

于 2013-09-25T17:31:07.340 回答
0

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

于 2014-10-22T13:55:25.557 回答
0

如果上面没有任何效果,请从侦听器类中删除 .class 即

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>
于 2015-06-06T01:39:43.837 回答
0

这对我有用..

右键单击maven web项目单击“属性”菜单在弹出窗口左侧选择“部署程序集”单击弹出窗口右侧的“添加...”按钮现在又出现一个弹出窗口(新程序集指令)单击“Java 构建路径条目”单击“下一步”按钮单击“完成”按钮,现在自动关闭新的程序集指令弹出窗口现在单击“应用”按钮和确定按钮运行您的 web 应用程序

于 2016-06-05T03:14:13.810 回答
0

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

于 2016-11-30T14:12:59.793 回答
0

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

有人提到将你的 spring jar 添加到 tomcat web 容器库中——这没关系,并且是大多数 EE 服务器运行的方式。但是请注意,通过将 spring 放置在 tomcat 上的类加载器树中更高的位置,您将运行高于战争上下文的类加载器级别。我建议您将库留在 per/war 较低级别的类加载器中。

我们在 Eclipse 中的结构项目更改后截断 .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"/>

你会没事的。

谢谢/迈克尔

于 2016-12-21T22:11:34.363 回答
0

当我在构建路径中有 lib 时,我得到了这个,但在我的部署程序集中没有。另外,当我缺少 context.xml 时。

于 2017-01-30T03:31:14.077 回答
0

当我查看解决方案时,似乎问题总是阻止加载弹簧库。这可能是依赖问题或部署问题。

就我而言,是 maven 存储库不知何故损坏了。解决问题的方法是删除文件夹“C:\Users(my name).m2\repository”并重建。

于 2019-05-08T12:28:17.720 回答
0

就我而言,问题是该类位于testpackage.json 中。将其移至main包装已解决了该问题。

于 2019-07-04T13:15:43.237 回答
0

我做了一个代码提取,但没有更新 Eclipse 服务器/模块选项卡上的项目版本。出于某种原因,maven clean install 没有从目标中删除旧项目文件夹,而是创建了新文件夹。

更正服务器上的项目版本修复了此问题。

发布这个以防万一有人犯同样的错误。

于 2019-09-19T16:02:35.710 回答
0

还要检查pom.xml依赖项中的范围,如果提供的范围表明您希望 JDK 或容器在运行时提供依赖项。

更多细节: 依赖范围

于 2021-08-29T14:58:47.013 回答