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

使用AnnotationConfigApplicationContext时出现NoClassDefFoundError问题求助

Spring AnnotationConfigApplicationContext 抛出 NoClassDefFoundError 问题解决

问题现象

使用AnnotationConfigApplicationContext启动Spring应用时出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/NestedIOException
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:323)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:247)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:311)
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:112)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:746)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:564)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93)
    at demo.SpringDemoApplication.main(SpringDemoApplication.java:12)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.NestedIOException
    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:520)
    ... 8 more

Process finished with exit code 1

XML配置方式可正常运行,但注解配置失效,怀疑是依赖或配置问题。

解决方案

1. 确保完整引入Spring上下文依赖

AnnotationConfigApplicationContext属于spring-context模块,该模块会自动传递依赖spring-core、spring-beans等核心组件。检查你的pom.xml是否包含完整的spring-context依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>你的Spring版本号</version>
</dependency>

避免单独只引入spring-core或spring-beans,缺失上下文模块会导致注解配置所需的类无法加载。

2. 统一Spring所有依赖版本

如果pom.xml中引入了多个Spring模块,必须确保所有模块的版本完全一致,版本冲突是引发类找不到的常见原因。可以通过dependencyManagement统一管理版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-framework-bom</artifactId>
            <version>你的Spring版本号</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

后续引入Spring模块时可省略版本号,自动使用BOM中定义的统一版本。

3. 清理本地依赖缓存

本地Maven/Gradle缓存的依赖包可能损坏,执行以下命令清理并重新下载依赖:

  • Maven:mvn clean install -U(-U参数强制更新快照依赖)
  • Gradle:./gradlew clean build --refresh-dependencies

4. 检查JDK版本兼容性

确保Spring版本与JDK版本匹配:

  • Spring 5.x 支持JDK 8及以上
  • Spring 6.x 支持JDK 17及以上
    版本不兼容会导致依赖加载异常,进而引发类找不到错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:31:13