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

Java Spring应用启动失败(NoClassDefFoundError),求解决方法

Spring Boot启动报错:NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup

我在尝试运行Spring应用时遇到问题,尽管已在pom.xml中添加如下依赖:

pom.xml

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <version>2.3.3.RELEASE</version>
</dependency>

我的启动类EcommerceApplication.java代码如下:

EcommerceApplication.java

package com.ecommerce.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

启动时抛出如下错误:

错误信息

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:247)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:262)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331)
    at com.ecommerce.demo.EcommerceApplication.main(EcommerceApplication.java:9)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.metrics.ApplicationStartup
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

我已通过网络搜索尝试解决,但问题仍未修复,请问该如何调整才能让应用顺利运行?


解决方案

这个错误的核心原因是:Spring Boot 2.3.x依赖的Spring Framework版本(5.2.x)中不存在ApplicationStartup类,该类是Spring Framework 5.3及以上版本才新增的API。出现这种情况大概率是项目存在依赖冲突——比如其他依赖间接引入了高版本的Spring Core,或者你手动混用了不同版本的Spring Boot组件。

方案1:使用Spring Boot父依赖统一版本管理

这是最稳妥的方式,通过引入Spring Boot的父依赖,让它自动管控所有Spring生态组件的版本,彻底避免版本冲突:

<project ...>
    <!-- 添加Spring Boot父依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/> <!-- 从Maven仓库自动查找父依赖 -->
    </parent>

    <dependencies>
        <!-- 无需再指定版本,父依赖会自动匹配兼容版本 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

方案2:排查并排除冲突依赖

如果无法使用父依赖,先通过Maven命令查看完整依赖树,定位引入高版本Spring Core的依赖:

mvn dependency:tree

找到冲突的依赖后,通过<exclusions>标签排除其中的Spring Core依赖:

<dependency>
    <groupId>冲突依赖的groupId</groupId>
    <artifactId>冲突依赖的artifactId</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

方案3:升级Spring Boot版本

如果项目允许升级,可以将Spring Boot版本提升到2.4.x及以上(这些版本依赖的Spring Framework 5.3+包含ApplicationStartup类):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.4.13.RELEASE</version> <!-- 选择稳定的高版本 -->
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:10:56