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

从Spring 3升级到Spring 5时Tomcat启动遇ContextLoaderListener配置错误

问题分析与解决方案

错误原因

Spring 5.1.x已移除org.springframework.beans.factory.access.BeanFactoryReference类,你仅升级了spring-context等少数Spring依赖,项目中仍残留Spring 3.x版本的相关组件,启动时旧组件尝试加载已被移除的类,从而触发NoClassDefFoundError。Spring框架各模块版本必须严格统一,混合版本必然引发兼容性问题。

解决方案

1. 统一所有Spring依赖版本

将pom.xml中所有Spring相关依赖(包括spring-core、spring-beans、spring-web、spring-webmvc等)统一升级到5.1.x版本,不能仅单独升级某几个模块。

示例pom配置:

<properties>
    <!-- 指定统一的Spring版本 -->
    <spring.version>5.1.20.RELEASE</spring.version>
</properties>

<dependencies>
    <!-- Spring核心模块 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
</dependencies>

2. 解决依赖冲突导致的构建失败

如果升级全量Spring依赖后构建失败,按以下步骤排查:

  • 执行mvn dependency:tree命令生成依赖树,定位引入旧版Spring依赖的第三方库。
  • 对依赖旧版Spring的第三方库,通过<exclusions>标签排除其中的旧Spring模块,示例:
<dependency>
    <groupId>第三方库groupId</groupId>
    <artifactId>第三方库artifactId</artifactId>
    <version>第三方库版本</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 若第三方库版本过低不兼容Spring 5.1.x,需升级该第三方库到支持Spring 5.x的版本。

3. 验证web.xml配置

确认ContextLoaderListener的配置正确,Spring 5.1.x中该类仍位于org.springframework.web.context.ContextLoaderListener,需确保spring-web依赖已正确引入且版本为5.1.x。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:35