java.lang.ClassNotFoundException:org.springframework.web.servlet.DispatcherServlet

Mah*_*leh 84 spring maven-2 spring-mvc maven

我正在使用spring 3.1.0.RELEASE,我的servlet容器是tomcat 7,我的IDE是eclipse indigo,包含DispatcherServlet 的jar spring-webmvc-3.1.0.RELEASE.jar 存在于lib文件夹中,但是当运行应用程序,我得到例外:

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:126)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    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)
Run Code Online (Sandbox Code Playgroud)

请告诉我为什么我得到这个例外,以及如何解决它.

编辑:以下是我的配置文件:

1- .springBeans:

<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
    <version>1</version>
    <pluginVersion><![CDATA[2.9.0.201203011806-RELEASE]]></pluginVersion>
    <configSuffixes>
        <configSuffix><![CDATA[xml]]></configSuffix>
    </configSuffixes>
    <enableImports><![CDATA[false]]></enableImports>
    <configs>
        <config>src/main/webapp/WEB-INF/checkout-servlet.xml</config>
    </configs>
    <configSets>
    </configSets>
</beansProjectDescription>
Run Code Online (Sandbox Code Playgroud)

2- web.xml:

<web-app>
  <display-name>Checkout</display-name>

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

  <servlet-mapping>
    <servlet-name>checkout</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

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

3- checkout-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <context:component-scan base-package="com.myapp"/>

    <bean id="myService" class="com.myapp.MyService"/>

</beans>
Run Code Online (Sandbox Code Playgroud)

当试图访问应用程序中的任何页面时,我得到例外:

HTTP Status 404 - Servlet checkout is not available

type Status report

message Servlet checkout is not available

description The requested resource (Servlet checkout is not available) is not available.
Apache Tomcat/7.0.22
Run Code Online (Sandbox Code Playgroud)

小智 234

您需要在部署程序集中添加"Maven依赖关系"

  • 右键单击您的项目并选择属性.
  • 单击部署程序集.
  • 点击添加
  • 单击"Java Build Path Entries"
  • 选择Maven依赖项"
  • 单击完成.

重新构建并再次部署

注意:这也适用于非maven项目.


Ser*_*uşu 28

两个可能的答案:

1-您的lib中没有包含spring-beans和spring-context jar.如果你正在使用maven(这将有很多帮助)那么这两行就足够了

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
   <version>3.1.0.RELEASE</version>
</dependency>
<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>3.1.0.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

2-必需的jar位于类路径中,但未部署在tomcat上.

  • 将`spring-webmvc`添加到我的`pom.xml`将解决问题.谢谢. (3认同)

Ade*_*lin 19

嗨,大家好我和Idea Intellij和Spring 4有同样的问题我解决了这个问题,我想和你分享答案.

我用tomcat 7/idea intellij 13/spring 4

pom.xml依赖项

  <properties>
    <spring.version>4.0.5.RELEASE</spring.version>
  </properties>

  <dependencies>     
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
enter code here
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.2</version>
    </dependency>
        <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
  </dependencies>
Run Code Online (Sandbox Code Playgroud)

在想法Intellij中,您需要转到文件 - >项目设置 - >工件.然后 在此输入图像描述

清理 - >重建项目 - >构建工件,一切都会好的......


Lyc*_*one 11

这为我解决了问题。这很简单,很容易解释。

步骤1

  • 右键点击项目
  • 点击属性

第2步

  • 点击添加...

第三步

  • 单击Java构建路径条目

第四步

  • 单击Maven依赖项
  • 单击完成按钮

第5步

  • 再次将Spring MVC应用程序重新部署到Tomcat
  • 重新启动Tomcat
  • 项目清单

classnotfoundexception


Mah*_*leh 10

我发现在部署程序集中,有一个条目:

[persisted container] org.maven.ide.eclipse.maven2_classpath_container
Run Code Online (Sandbox Code Playgroud)

我删除它,并添加了maven dependencies条目,现在它工作正常.


小智 5

If all of these advice doesn't work, you should re-create your Server (Tomcat or like that). That solved my problem.


Vic*_*tor 5

在 pom.xml 中包含以下依赖项

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>{spring-version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)