92

我正在使用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)

请告知我为什么会收到此异常,以及如何解决它。

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

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>

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>

3-结帐-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>

同样在尝试访问应用程序中的任何页面时,我得到了异常:

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
4

18 回答 18

257

您需要在部署程序集中添加“Maven 依赖项”

  • 右键单击您的项目并选择属性。
  • 单击部署程序集。
  • 点击添加
  • 单击“Java 构建路径条目”
  • 选择 Maven 依赖项”
  • 单击完成。

重新构建和部署

注意:这也适用于非 Maven项目。

于 2012-10-16T08:53:38.720 回答
34

两个可能的答案:

1-您的库中没有包含 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>

2- 必要的 jar 在您的类路径中,但未部署在 tomcat 上。

于 2012-06-27T21:49:27.610 回答
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>

在idea Intellij 中,您需要转到文件-> 项目设置-> 工件。

然后 在此处输入图像描述

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

于 2014-07-05T11:35:43.920 回答
13

这为我解决了这个问题。这很容易而且很简单地解释了。

第1步

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

第2步

  • 单击部署程序集选项卡中的
  • 单击添加...

第 3 步

  • 单击 Java 构建路径条目

第4步

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

第 5 步

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

类未发现异常

于 2018-06-03T09:39:41.627 回答
11

我发现在部署程序集中,有以下条目:

[persisted container] org.maven.ide.eclipse.maven2_classpath_container

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

于 2012-06-28T08:54:54.213 回答
5

如果所有这些建议都不起作用,您应该重新创建服务器(Tomcat 或类似的)。这解决了我的问题。

于 2015-03-09T03:26:19.307 回答
5

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

<dependency>
 <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
   <version>{spring-version}</version>
</dependency>
于 2015-12-30T16:44:27.810 回答
4

我面临着同样的问题。当我在本地查看 maven 存储库 .m2 文件夹(....m2\repository\org\springframework\spring-webmvc)时,我发现了两个 3.2.0.RELEASE 文件夹。所以我删除了一个。然后我去project,右键->properties->deployment essembly->add maven dependencies。清理构建,然后重新启动服务器。然后 DispatcherServlet 被加载。

于 2015-01-29T13:42:49.990 回答
3
  1. 转到您正在工作的项目的属性
  2. 选择部署程序集菜单并单击添加按钮
  3. 选择Java Build Path Entries并单击Maven Dependencies
  4. 构建项目并运行

在此处输入图像描述

于 2019-11-13T13:30:35.123 回答
2

在我的情况下,我在使用 maven 的更新项目实用程序后遇到了这个问题。我尝试了您建议的所有解决方法,但似乎没有任何效果。最后,解决方案只是从服务器中删除项目以确保它是干净的,然后再次添加它。然后它起作用了,我希望这个解决方案可以帮助你们中的任何人。

于 2013-11-02T09:46:35.040 回答
2

您可以使用 GlassFish 服务器,错误将得到解决。我尝试使用 tomcat7 和 tomcat8,但此错误不断出现,但使用 GlassFish 解决了。我觉得是服务器的问题。

这些是tomcat7的结果: 使用 tomcat7 的结果

以下是 GlassFish 的结果: GlassFish 的结果

于 2016-02-18T04:58:50.177 回答
1

右键单击您的项目并选择属性。单击部署程序集。单击添加单击“Java 构建路径条目”选择 Maven 依赖项“单击完成。

于 2016-06-12T19:05:23.277 回答
1

它可能对某人有用,所以我会在这里发布。我错过了对我的这种依赖pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
于 2019-01-23T17:37:53.987 回答
0

我通过以下步骤解决了:

  • 在项目中右击 > 配置 > 转换为 Maven 项目
  • 转换完成后,在项目中右键 > Maven > 更新项目

这修复了项目的“部署程序集”设置。

于 2015-08-31T15:19:51.347 回答
0

将 jar 文件从类路径移动到web-inf/lib,然后运行一个新的 tomcat 服务器。

于 2016-02-24T17:56:29.980 回答
0

我找到了一个简单的解决方案,只需将您的 jars 添加到 WEB-INF-->lib 文件夹中..

于 2017-02-01T04:37:01.483 回答
0

我在 WebSphere 中遇到了同样的问题,但即使我验证了 Spring 依赖项在那里并且它在 tomcat 中运行得很好,也找不到解决方案。我最终卸载了应用程序,但仍然收到错误,所以我认为 WebSphere 挂在了一些损坏的实例上。

为了解决这个问题,我必须重新安装应用程序,停止它,卸载它,然后重新安装它。

于 2018-08-23T19:20:45.097 回答
0

对我来说,这是一个错误pom.xml- 我设置<scope>provided<scope>了我的依赖项,这使得它们在mvn package阶段不会被复制。

我的症状是 OP 发布的错误消息,并且运行包后 .war 内的 WEB-INF/lib 路径中未包含 jar 包。当我删除范围时,罐子出现在输出中,现在一切正常。

于 2018-11-28T12:40:55.387 回答