You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决SpringMVC中DispatcherServlet类未找到异常及Deployment Assembly操作问题?

解决SpringMVC在Tomcat中启动的ClassNotFoundException问题

首先来看你遇到的核心报错:

SEVERE: Servlet [SpringMVC] in web application [/SpringMVC] threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispactherServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:544)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:525)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1044)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:983)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4978)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5290)

先提个小细节:报错里的DispactherServlet是拼写错误(正确类名是DispatcherServlet),先检查你的web.xml里的配置是不是也写错了,这是很容易踩的小坑!

这个错误本质是Spring MVC的核心依赖没有被正确部署到Tomcat的WEB-INF/lib目录下,Tomcat找不到对应的类。你尝试的Deployment Assembly方法没成功,大概率是因为没选对依赖来源或目标路径,下面给你几个靠谱的解决方案:

方案1:用Maven/Gradle确保依赖正确打包

如果你的项目用Maven管理,先确认pom.xml里的配置没问题:

<!-- 确保打包类型是war -->
<packaging>war</packaging>

<dependencies>
    <!-- Spring MVC核心依赖,替换成你实际使用的版本 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.20</version>
    </dependency>
    <!-- Servlet API依赖,scope设为provided避免和Tomcat自带的冲突 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

执行mvn clean package生成war包,这个包会自动把所有依赖打包到WEB-INF/lib下,直接把war包丢到Tomcat的webapps目录重启服务器就行。

方案2:手动添加依赖到WEB-INF/lib

如果是手动管理依赖:

  • 下载Spring MVC的核心jar包(包括spring-webmvc.jar、spring-web.jar、spring-core.jar、spring-context.jar等)
  • 把这些jar包复制到项目的WEB-INF/lib目录下
  • 重新部署项目到Tomcat,Tomcat会自动加载这个目录下的类文件

方案3:修正Deployment Assembly配置(解决Finish按钮禁用问题)

如果还是想用这个方法,按步骤来:

  1. 右键项目 → 选择Properties(Eclipse)或Open Module Settings(IDEA)
  2. 找到Deployment Assembly选项
  3. 点击Add → 选择Java Build Path Entries → 下一步
  4. 选中所有Spring相关的依赖(Maven项目会显示Maven Dependencies)
  5. 确认目标路径是WEB-INF/lib(默认就是这个,要是不对手动修改)
  6. 这时候Finish按钮应该会激活,完成配置后重新部署项目

最后再强调一遍:一定要检查web.xml里的DispatcherServlet类名拼写,别像报错里那样少打个t,不然依赖再对也白搭!正确的配置示例:

<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

内容的提问来源于stack exchange,提问作者BlackCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:45:48