关于springmvc项目出现DispatcherServlet没有加载的问题
关于springmvc项目出现java.lang.ClassNotFoundException的问题
1 问题描述
学习springmvc时,搭建了一个简单的springmvc框架。随后启动tomcat,一切正常,访问localhost:8080正常;然后继续访问RequestMapping的虚拟路径localhost:8080/quick,意外的出现了404错误。
2 问题分析
2.1 首先了解一下tomcat访问路径的流程
-
- 浏览器输入localhost:8080/quick回车后,tomcat会先去webapp下的web.xml配置文件里找url-pattern中的路径
-
- 然后会根据映射和servlet配置去找UserController
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里面要有下面这个,没有的话在右边添加进来,流程如下:
然后重新run一下,查看tomcat localhost log之前的报错消失,项目正常运行。