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

Spring框架NoClassDefFoundError及BeanCreationException问题求助

解决Spring Cloud loggingRebinder Bean创建异常与LoggingSystem NoClassDefFoundError

哦,这个问题我之前在项目里踩过坑!当时打包成Jar启动就报这个错,折腾了好一阵才摸清楚根源。

问题根源分析

你遇到的BeanCreationException本质是loggingRebinder Bean初始化时找不到Spring Boot核心的LoggingSystem类——大概率是Spring Boot与Spring Cloud版本不兼容,或者打包时缺失了关键依赖。

loggingRebinder是Spring Cloud配置刷新机制的组件,它强依赖Spring Boot的日志系统类。如果两者版本不匹配,或者打包过程中没把Spring Boot的日志依赖完整打包进去,就会触发NoClassDefFoundError,进而导致Bean创建失败。

具体解决步骤

  • 第一步:核对Spring Boot与Spring Cloud的版本兼容性
    Spring Cloud的每个版本都绑定了特定范围的Spring Boot版本,绝对不能乱搭配。举几个常用的对应关系:

    • Hoxton版本 → 对应Spring Boot 2.2.x-2.3.x
    • 2020.0.x(Ilford)→ 对应Spring Boot 2.4.x-2.5.x
    • 2021.0.x(Jubilee)→ 对应Spring Boot 2.6.x-2.7.x
      你可以在Maven的pom.xml里统一管控版本,示例配置如下:
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
    </parent>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • 第二步:确认日志依赖完整性
    确保项目中引入了spring-boot-starter-logging(一般Spring Boot的starter会自动包含,但纯自定义Jar可能遗漏)。Maven依赖配置如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
    
  • 第三步:检查打包配置
    如果用spring-boot-maven-plugin打包,一定要执行spring-boot:repackage目标,而非普通的package,这样插件会把所有依赖打包成可执行Jar;如果用maven-shade-plugin,要配置正确的include规则,确保Spring Boot和Spring Cloud的核心依赖都被包含。

  • 第四步:临时排除自动配置类验证
    可以在启动类上排除RefreshAutoConfiguration,验证是否是该自动配置类引发的问题:

    @SpringBootApplication(exclude = RefreshAutoConfiguration.class)
    public class YourApplication {
        public static void main(String[] args) {
            SpringApplication.run(YourApplication.class, args);
        }
    }
    

    如果排除后启动正常,那基本可以确定是版本兼容问题,回头调整版本即可。

总结

这个问题90%以上都是版本不匹配导致的,先花时间核对版本对应关系,再排查打包和依赖,基本就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:12:20