关于springmvc项目出现DispatcherServlet没有加载的问题

关于springmvc项目出现java.lang.ClassNotFoundException的问题

1 问题描述

​ 学习springmvc时,搭建了一个简单的springmvc框架。随后启动tomcat,一切正常,访问localhost:8080正常;然后继续访问RequestMapping的虚拟路径localhost:8080/quick,意外的出现了404错误。

2 问题分析

2.1 首先了解一下tomcat访问路径的流程

    1. 浏览器输入localhost:8080/quick回车后,tomcat会先去webapp下的web.xml配置文件里找url-pattern中的路径

关于springmvc项目出现DispatcherServlet没有加载的问题

    1. 然后会根据映射和servlet配置去找UserController

关于springmvc项目出现DispatcherServlet没有加载的问题

2.2 查找问题

​ 代码检查再三没有问题,但还是404错误,就很心累。寻找错误时在Tomcat Localhost log日志里面发现这个错误:

严重: Servlet [DispatcherServlet] in web application [] threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:504)

​ 然后去百度了一波发现有的说如果web项目的lib文件夹不在WEB-INF下,那么需要手工去添加到Output,这样才能在部署时,将jar包放到部署路径的WEB-INF/lib里。

​ 于是去添加,完了后还是报错。

3 解决办法

​ 把项目相关的project structure 里面的artifits删掉,把tomcat里面的dependencies删掉,完了重新去添加部署!记得output layout里面要有下面这个,没有的话在右边添加进来,流程如下:

关于springmvc项目出现DispatcherServlet没有加载的问题
关于springmvc项目出现DispatcherServlet没有加载的问题

然后重新run一下,查看tomcat localhost log之前的报错消失,项目正常运行。