Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决

环境

开发工具 Maven版本 web.xml版本
eclipse 3.6.3 2.5

一、问题出现

将项目直接通过runAs —> run on server部署到tomcat服务器报错

java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServle



二、问题解决

初步判定是SpringMvc监听器组件ContextLoaderListener找不到的问题

ContextLoaderListener:监听器,实现了接口ServletContextListener

ServletContextListener:可以在web工程初始化之前,通过自定义代码完成对Spring IoC容器的初始化;也可以在web工程关闭之时完成Spring IoC容器的资源进行释放

  • 首先检查web.xml文件,发现监听器是配置好了的
    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>

  • 检查Properties --> Deployment Assembly是否将Maven 依赖路径配置到lib目录下 Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第1张图片

  • 检查Servers–>服务器配置 Server Locations,具体操作如下

    双击服务器,例此处需双击Tomcat v8.5....
    Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第2张图片

之后会出现一个窗口,检查Server Locations配置,改成如下样子
Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第3张图片

  • 完成上述操作后,我们开始进行运行前的准备

    移除已经部署好的项目,并clean服务器
    Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第4张图片
    Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第5张图片

    clean项目
    Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第6张图片

更新Maven
Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第7张图片

  • 再次部署到服务器,控制台再没有报错,项目成功运行




三、问题总结

我本次出现这个问题,就是因为tomcat服务器路径和发布路劲不一致所导致

即下方的Server path和Deploy path
Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第8张图片

我未修改时Deploy path指向的路径是下图的wtpwebapps(Eclipse配置tomcat默认是发布到.metadata\plugins\目录下的,wtpwebapps)
Maven部署SSM项目报错“java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServlet”解决_第9张图片
导致的结果是:wtpwebapps中生成了项目也生成了lib,而webapps中生成了项目但是没有生成lib文件夹

所以,就导致了

java.lang.ClassNotFoundException org.springframework.web.servlet.DispatcherServle

而当我们正确指向了文件夹后,再次部署,就可以看到webapps下的项目中已经有lib文件夹了

所有,程序顺畅运行,再没有报错




四、参考文献

tomcat 目录之 webapps 和 wtpwebapps
eclipse中maven项目部署到tomcat
《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》14章SpringMVC初始化和流程

你可能感兴趣的:(大二下学期,学习总结,java,maven,tomcat)