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

Sud*_*ip7 11 java eclipse spring-mvc

我正在做一个简单的Spring MVC应用程序(不使用maven),它将在浏览器上打印hello world.它是eclipse中的动态项目,因此我将所有必需的jar文件放在构建路径和WEB-INF/lib文件夹中

我尝试了两种解决方案,但都没有用.

找到的解决方案:

  1. 清理tomcat工作目录
  2. 把spring-mvc/spring-web.jar jar文件放在lib中

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

    <display-name>Spring MVC Application</display-name>

    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

</web-app>
Run Code Online (Sandbox Code Playgroud)

并且在配置contextLoaderListener时没有拼写错误,那么问题是什么,是否还有其他解决方案

Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jan 20, 2014 8:16:39 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.11
Jan 20, 2014 8:16:40 PM 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: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:4618)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184)
    at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
Jan 20, 2014 8:16:40 PM org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/SpringSample] startup failed due to previous errors
Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8081"]
Jan 20, 2014 8:16:40 PM org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Jan 20, 2014 8:16:40 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4010 ms
Run Code Online (Sandbox Code Playgroud)

最终我收到404错误,因为我的服务无法加载

All*_*anT 25

我在Eclipse中遇到了同样的问题.当我做一个maven clean install并将生成的WAR文件移动到我的Tomcat webapp文件夹时,它将运行没有问题.但是,为了调试我想在Eclipse中运行,但它会抛出以下错误.

SEVERE: Error configuring application listener of class   org.springframework.web.context.ContextLoaderListener
Run Code Online (Sandbox Code Playgroud)

我搜索了一下,直到找到以下博文.

http://commonexceptions.blogspot.com/2014/01/java.html

正如作者解释的那样:

当我没有将maven依赖项添加到构建路径时,会导致此异常.我正在使用eclipse与maven,因此必须在构建路径中包含maven依赖项,如下所述.

请参阅解决方案的帖子.这是一个简单的eclipse Deployment Assembly配置修复.花了我大约30秒,现在我可以在Eclipse中调试我的Spring webapp.

以下是帖子的相关步骤:

在项目Web部署程序集中添加Maven依赖项:

  • 打开项目属性(例如:在项目浏览器中右键单击项目名称以选择"属性").
  • 选择"部署程序集".
  • 点击右侧导航栏中的"添加..."按钮.
  • 从Directive Type菜单中选择"Java Build Path Entries",然后单击"Next".
  • 从Java Build Path Entries菜单中选择"Maven Dependencies"
  • 单击"完成".
  • 现在应该将"Maven依赖项"添加到Web部署程序集中,它应该运行.

使用Eclipse WDT并使用未修改且以前工作的项目时:

  • 如果Tomcat正在运行Stop it
  • 打开"服务器"视图:窗口,然后选择"显示视图",然后选择"其他">服务器>服务器
  • 右键单击Tomcat服务器,然后选择"清除Tomcat工作目录".
  • 右键单击Tomcat服务器,然后选择"清除"
  • 重新启动Tomcat服务器

上述解决方案应解决该异常.

  • 谢谢,经过几个小时的努力,试图将现有的Java项目转换为eclipse中的动态Web项目,这让它变得有效. (2认同)

Rid*_*ANE 2

尝试将 spring-web.jar 文件直接放在 WEB-INF/lib (WEB-INF/lib/spring-web.jar) 中而不是放在 WEB-INF/lib/spring-mvc/spring-web.jar 中