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

时间:2014-01-20 15:06:26

标签: java eclipse spring-mvc

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

我尝试了两种解决方案,但两种方法都没有效果。

我找到的解决方案:

  1. 清理tomcat工作目录
  2. 将spring-mvc / spring-web.jar jar文件放入lib
  3. 这是我的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>
    

    并且在配置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
    

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

5 个答案:

答案 0 :(得分:25)

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

SEVERE: Error configuring application listener of class   org.springframework.web.context.ContextLoaderListener

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

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

正如作者所解释的那样:

  

当我没有添加maven依赖项时,会导致此异常   构建路径。我和maven一起使用eclipse,所以不得不包括   构建路径中的maven依赖关系如下所述。

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

以下是帖子中的相关步骤:

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

  • 打开项目属性(例如:在项目资源管理器中右键单击 项目名称选择“属性”)。
  • 选择“部署程序集”。
  • 点击右侧导航栏中的“添加...”按钮。
  • 从“指令类型”菜单中选择“Java Build Path Entries”,然后单击“Next”。
  • 从Java Build Path Entries菜单中选择“Maven Dependencies”
  • 点击“完成”。
  • 现在应该将“Maven依赖项”添加到Web部署程序集中,它应该运行。

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果您正在创建没有maven的简单项目, 需要遵循以下步骤,

  1. 下载所需的jar文件,例如我使用的是Spring 4,因此我从Index of release

  2. 下载了文件
  3. 然后将此文件添加到 WebContent / WEB-INF / lib 文件夹中。

  4. 在构建路径中添加jar文件(在eclipse中:右键单击项目 - &gt;属性 - &gt; Java构建路径 - &gt;添加JAR ...)

  5. 这将避免 org.springframework.web.context.ContextLoaderListener 例外。

答案 3 :(得分:1)

如果你有Maven启动并运行,我有一个非常好的方法来帮助你学习Spring MVC。

如果是这样的话:去你的命令行(Cygwin)我用......

mvn archetype:generate 它会要求一个'原型号'。对你来说...... 16 输入组ID,它只是主包。 输入Artifact ID,它是您的项目名称。 SNAP-SHOT ---只需输入和版本一样。 包 - 与您的组ID名称相同。 EX:com.spring 输入字母'y'确认,然后按enter键。 在您的工作区目录中完成上述所有操作后。这样就在那里创造了。 你可以用“mvn eclipse:eclipse”在Eclipse中加载它或者你可以导入它。我更喜欢老式的导入现有项目。

在所有配置(基于Java)方面,一切都将为您“设置”,这对您有好处。它将包含您在pom.xml中已经存在的所有Maven依赖项。如果需要,您可以添加或删除它。

这里的要点是你已经有一个正在运行的项目,你可以从那里玩它。我首先创建了这样的所有项目并删除了我不需要的项目并添加了我做的事情然后从那里开始。

祝你好运!!!

答案 4 :(得分:1)

这是一个依赖性问题,工件中缺少某些依赖项。 我在IntelliJ中的解决方案:

右键单击项目名称 - &gt;打开模块设置 - &gt;问题 - &gt;向工件添加缺少的依赖项

重启服务器(我的情况是tomcat)

希望有所帮助