STS创建Maven Spring MVC项目遇DispatcherServlet找不到及无lib目录问题求助
我来帮你拆解这个问题,其实你遇到的两个核心点——找不到DispatcherServlet和项目里没有lib目录,本质上都是Maven依赖管理的逻辑问题,不用手动创建lib目录,咱们一步步排查解决:
为什么项目里没有lib目录?
这是Maven的正常行为!和传统Web项目不同,Maven作为依赖管理工具,不会把依赖JAR包直接放在项目目录里,而是将所有依赖下载到本地Maven仓库(默认路径是~/.m2/repository)。当你打包或部署项目时,Maven会自动把需要的依赖JAR包复制到WAR包的WEB-INF/lib目录下,完全不需要手动维护。
为什么会出现ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet?
这个错误的核心原因是:你的项目没有正确引入Spring Web MVC的依赖,或者依赖没有被加载到项目的classpath中。具体排查步骤:
检查pom.xml的依赖配置
打开项目根目录下的pom.xml,确认是否包含Spring Web MVC的依赖。如果没有,添加以下配置(替换成你需要的Spring稳定版本号):<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> <!-- 可根据需求选择合适版本 --> </dependency>注意:如果groupId、artifactId或者版本号写错,Maven会无法下载依赖,同样会导致类找不到的问题。
让Maven重新加载依赖
添加依赖后,右键项目 → 选择Maven→Update Project,勾选Force Update of Snapshots/Releases,点击确定。这会让Maven重新下载并加载所有依赖到项目的classpath中。检查Tomcat部署配置
确保STS在部署项目时,已经把Maven管理的依赖包含进去:- 右键STS中的Tomcat服务器 →
Open - 切换到
Deployment标签,查看你的项目部署类型是war还是war exploded - 如果是
war exploded,可以先执行Maven的package命令(右键项目 →Run As→Maven Package),生成完整的 exploded 目录结构后再部署。
- 右键STS中的Tomcat服务器 →
可能的操作失误或理解误区
- 项目模板选择问题:创建项目时如果选了基础的Maven Web模板,而非STS提供的Spring MVC模板,默认不会自动添加Spring Web MVC依赖,需要手动补全。
- Maven命令未执行:如果没执行过
mvn compile或mvn package,Maven不会把依赖同步到项目的编译目录中,导致Tomcat部署时找不到类。 - 本地仓库依赖损坏:如果本地Maven仓库中的Spring Web MVC依赖包损坏,可以删除对应目录(比如
~/.m2/repository/org/springframework/spring-webmvc),然后重新执行Maven Update来重新下载。
总结一下:完全不需要手动创建lib目录,Maven会帮你管理所有依赖。你现在的问题核心是依赖配置或加载异常,按上面的步骤排查pom.xml和Maven依赖加载即可解决。
内容的提问来源于stack exchange,提问作者CuriousMind

