使用Maven运行Spring MVC加法示例时遇DispatcherServlet类未找到错误
DispatcherServlet类找不到的500错误 嘿,我太懂你遇到这个问题的挫败感了——刚搭好Spring MVC加法示例,一访问页面就弹出500错误,还提示java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet。别慌,这个问题90%都是Maven依赖配置出了问题,咱们一步步来搞定:
核心原因
DispatcherServlet是Spring MVC的核心入口类,它属于spring-webmvc这个依赖包。如果运行时找不到它,要么是你没引入这个依赖,要么是依赖范围配置错了(比如设成了test,导致运行时不会被打包到项目里)。
具体修复步骤
1. 检查并完善pom.xml依赖
确保你的pom.xml里已经正确引入spring-webmvc和配套的spring-web依赖,版本要和你的Spring项目保持一致。示例配置如下:
<dependencies> <!-- Spring MVC核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> <!-- 替换成你实际使用的Spring版本 --> <!-- 重要:不要加<scope>test</scope>,默认compile范围会在运行时包含该依赖 --> </dependency> <!-- Spring Web基础依赖,版本要和webmvc完全一致 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.20</version> </dependency> <!-- Servlet API依赖,范围设为provided即可,容器会提供 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies>
2. 重新构建项目
在项目根目录执行Maven命令,清理旧构建文件并重新打包,确保依赖被正确下载到本地仓库:
mvn clean install
3. 验证依赖是否打包成功
如果是部署war包,一定要检查WEB-INF/lib目录下是否存在spring-webmvc-xxx.jar和spring-web-xxx.jar这两个文件——只有它们存在,运行时才能找到对应的类。
4. 检查DispatcherServlet配置正确性
确认你的web.xml(或者Java配置类)中DispatcherServlet的类名拼写完全正确,别出现大小写或包路径错误:
<!-- web.xml中的示例配置 --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
5. IDE刷新依赖(如果用IDE开发)
如果你是在IntelliJ IDEA或Eclipse中开发,右键项目选择Maven -> Reload Project,让IDE重新加载依赖,避免缓存导致的依赖未生效问题。
按照这些步骤操作后,重启项目再访问页面,应该就能解决这个ClassNotFoundException的问题了。
内容的提问来源于stack exchange,提问作者Saipriyadarshini Bandi

