You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebSphere环境下Spring框架出现NoClassDefFoundError报错求助

解决java.lang.NoClassDefFoundError: org.springframework.web.servlet.ModelAndView的实用方案

嘿,我之前踩过一模一样的Spring MVC类找不到的坑!咱们一步步来排查解决:

  • 先确认核心jar包的完整性与版本一致性
    ModelAndView类是在spring-webmvc.jar里的,你得先确认这个jar确实存在于WEB-INF/lib目录下。另外,所有Spring相关的jar包版本必须完全匹配——比如spring-core用了5.3.20,那spring-web、spring-webmvc也得是5.3.20,版本不兼容是这类错误的高发原因。

  • 检查IDE部署时是否漏掉了jar包
    有些IDE(比如Eclipse、IDEA)偶尔会出现部署 artifact 时未将WEB-INF/lib下的jar包同步到容器的情况。你可以手动去Tomcat的webapps/你的项目名/WEB-INF/lib目录下查看,确认spring-webmvc.jar是否真的被部署过去了。如果是Maven项目,记得把spring-webmvc依赖的scope设为compile,不要设成test或者provided(除非容器本身自带Spring,一般不建议)。

  • 删掉MANIFEST.MF里的类路径配置
    其实Web容器会自动把WEB-INF/lib下的所有jar包加入类路径,你手动在MANIFEST.MF里配置类路径反而可能导致冲突或覆盖。建议先移除这部分配置,重启容器试试。

  • 补全并验证DispatcherServlet的配置
    你贴的web.xml内容不完整,这里给你一个标准的DispatcherServlet配置示例,检查你的配置是否符合:

    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup> <!-- 设置为正整数,让容器启动时就加载Servlet -->
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern> <!-- 根据业务需求调整,比如*.do或者/ -->
    </servlet-mapping>
    

    另外,对应的Spring配置文件(比如spring-servlet.xml)要放在WEB-INF目录下,文件名要和servlet-name对应(servlet-name是spring,配置文件名就是spring-servlet.xml),确保文件里已经正确配置了组件扫描、视图解析器等必要内容。

  • 终极清理:清空容器缓存再重启
    有时候容器的缓存会残留旧的编译文件,导致类加载异常。你可以清空Tomcat的work目录,然后重新部署项目,再重启Tomcat试试。

内容的提问来源于stack exchange,提问作者user3693876

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:46:36