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

时间:2011-06-02 05:23:34

标签: spring tomcat7 classnotfoundexception

我包括:

  • 所有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”。

Google上有人说应该包含spring.jar但我在3.x发行版中没有看到任何spring.jar。

Eclipse 3.6.2 Tomcat 7

编辑:有人说“自动更新依赖关系”应该在“项目属性”中检查,但我在项目属性中看不到类似的内容。 ClassNotFoundException:org.springframework.web.con text.ContextLoaderListener

32 个答案:

答案 0 :(得分:754)

在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”。
  6. 您应该看到Web部署程序集定义中添加了“Maven依赖项”。

答案 1 :(得分:110)

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

  1. 停止Tomcat(如果它正在运行)
  2. 打开“服务器”视图:窗口>显示视图>其他>服务器>服务器
  3. 右键单击Tomcat服务器>清理Tomcat工作目录。
  4. 右键单击Tomcat服务器>清洁
  5. 重新启动服务器
  6. 这通常可以解决您提到的问题。

答案 2 :(得分:26)

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

答案 3 :(得分:22)

我使用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中名为Maven:...的库中,它将移至左侧窗格中的WEB-INF/lib

接受并重新启动Tomcat。

答案 4 :(得分:8)

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

答案 5 :(得分:7)

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

对于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起。

答案 6 :(得分:6)

如果上述所有内容均无效,请尝试以下操作。它对我有用。

从服务器中删除您的项目&gt;重启服务器&gt;将您的项目添加到服务器&gt;重启服务器。

详细说明:

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.

答案 7 :(得分:4)

如果您正在使用maven,那么也许该项目尚未建成。首先做一个'mvn clean package',然后再尝试重新部署。

答案 8 :(得分:4)

Eclipse Luna的解决方案:

  1. 右键单击maven web项目
  2. 点击“属性”菜单
  3. 在弹出窗口的左侧选择“部署程序集”
  4. 点击弹出窗口右侧的“添加...”按钮
  5. 现在出现一个弹出窗口(New Assembly Directivies)
  6. 点击“Java Build path entries”
  7. 点击“下一步”按钮
  8. 点击“完成”按钮,现在自动关闭New Assemby Directivies弹出窗口
  9. 现在点击“应用”按钮和确定按钮
  10. 运行您的网络应用

答案 9 :(得分:4)

我为面向Tomcat 7运行时配置的eclipse项目面临同样的问题

右键单击项目并转到项目属性。 单击Deployment Assembly。我注意到我在编译期间用用户库创建的弹簧库jar文件丢失了。 只需添加jar,你就应该在tomcat启动时看到控制台没有错误

答案 10 :(得分:3)

实际上这是Tomcat的问题。 只是去&#39; lib&#39;你的项目的文件夹,并复制你的所有&#39;春天&#39;相关的罐子进入这个。刷新你的项目,你就可以了。 这个问题有时会持续存在,因为tomcat无法找到Spring核心类。

答案 11 :(得分:2)

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

答案 12 :(得分:2)

如果您正在使用IntelliJ IDEA,并在Tomcat服务器上部署应用程序,它会说: 在文件菜单下 - &gt;选择项目结构 - &gt;点击工件 - &gt;选择您的罐子并右键单击 - &gt;放入WEB \ lib - &gt;重启服务器enter image description here

答案 13 :(得分:1)

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

有一天,我决定清理我的工作站。我根据不同的客户将项目安排到合适的文件夹中。结果一切都搞砸了。花了一整天后,它并没有最终进入固定的工作空间。第二天,我只是删除了工作区的.metadata文件夹,并再次导入了所有项目。 Bingo全部设定。

答案 14 :(得分:1)

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

您必须在部署程序集中拥有Maven库

答案 15 :(得分:1)

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

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

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

如果任何人无法解决此错误,他们也可以通过此link

解决

答案 16 :(得分:1)

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

答案 17 :(得分:1)

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

RC(右键点击网络项目) - &gt;属性 - &gt;部署组件 - &gt;添加 - &gt; Java构建路径条目 - &gt;下一步 - &gt;

点击下一个只有一个空白窗口,其中选项Next和Fnish disabled。我现在可以做什么?

答案 18 :(得分:1)

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

RC(右键点击网络项目) - &gt;属性 - &gt;部署组件 - &gt;添加 - &gt; Java构建路径条目 - &gt;下一步 - &gt;选择缺少的jar文件 - &gt;下一个 - &gt;光洁度

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

答案 19 :(得分:1)

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

1)从eclipse中的服务器标签中停止并删除 tomcat服务器

eclipse tomcat tab

2)从tomcat安装中清除webapp和工作目录,(参考,How-To: Clear out Tomcat’s cache and fix outdated JSP problems

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

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

$ ./gradlew clean eclipse //为mvn个用户$ mvn clean package

启动相应的命令

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

答案 20 :(得分:1)

我试过了

  • project clean mvn
  • 清洁
  • 自动清理tomcat工作目录
  • 更新依赖关系

至少暂时有效的是将Maven依赖项添加到Web部署程序集定义

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

我正在使用 - 日食朱诺 - 嵌入式maven - tomcat 7

答案 21 :(得分:0)

如果上述内容无效,则从侦听器类中删除.class,即

<listener>
<listener-class>

org.springframework.web.context.ContextLoaderListener.class

</listener-class>
</listener>

答案 22 :(得分:0)

对我来说,实际的解决方案是安装“m2e-wtp - Maven集成WTP”。在这种情况下,马塞洛的解决方案并不是必要的。

答案 23 :(得分:0)

这对我有用..

右键单击maven web项目 点击“属性”菜单 选择部署程序集&#39;在弹出窗口的左侧 点击“添加...”#39;弹出窗口右侧的按钮 现在出现一个弹出窗口(New Assembly Directivies) 单击“Java Build path entries”&#39; 点击下一步&#39;按键 点击完成&#39;按钮,现在自动关闭New Assemby Directivies弹出窗口 现在点击“应用”#39;按钮和确定按钮 运行您的Web应用程序

答案 24 :(得分:0)

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

答案 25 :(得分:0)

在使用Gradle在IntelliJ项目中更改了我的Hibernate映射后,发生了这种情况。简单地重建项目对我有用。

答案 26 :(得分:0)

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

有人提到将你的弹簧罐添加到tomcat web容器lib中 - 这是正常的,这是大多数EE服务器运行的方式。但请注意,通过在tomcat上的类加载器树中放置更高的弹簧,您将运行高于war上下文的类加载器级别。我建议你将libs保存在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"/>

你会没事的。

谢谢你 /迈克尔

答案 27 :(得分:0)

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

答案 28 :(得分:0)

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

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

答案 29 :(得分:0)

当我查看解决方案时,似乎总是有问题阻止了spring库的加载。可能是依赖性问题或部署问题。

就我而言,这是Maven存储库因某种原因损坏了。解决问题的方法是删除文件夹“ C:\ Users(我的名字).m2 \ repository”并重建。

答案 30 :(得分:0)

在我的情况下,问题是该类位于test包中。将其移至main软件包已解决了该问题。

答案 31 :(得分:0)

我进行了代码提取,但是没有更新Eclipse服务器/模块选项卡上的项目版本。由于某些原因,maven全新安装不会从目标中删除旧项目文件夹,而是也创建了新文件夹。

在服务器上更正项目版本可解决此问题。

发布此信息以防万一有人犯同样的错误。