Spring入门报错java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
问题分析与解决
错误原因
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext 核心问题是:编译时能找到Spring相关类,但运行时类路径里缺少Spring核心依赖的jar包。
解决步骤
1. 确认所需的Spring核心依赖
你需要以下几个核心jar包(版本建议和教程使用的Spring版本匹配,比如教程用3.x就对应3.x版本):
spring-context.jarspring-core.jarspring-beans.jarspring-expression.jarcommons-logging.jar(Spring依赖的日志组件)
2. 普通Java项目(手动管理jar)的配置
如果你的项目是手动添加jar的普通Java项目:
- 在项目根目录新建
lib文件夹,把上述jar包复制进去 - 在IDE中配置运行时类路径:
- Eclipse:右键项目 → Build Path → Add External Archives,选中lib下的所有jar;或者右键lib文件夹 → Build Path → Add to Build Path
- IDEA:File → Project Structure → Modules → Dependencies,点击
+号选择JARs or directories,选中lib下的jar,确保Scope设置为Compile或Runtime
3. Maven项目(推荐方式)的配置
如果用Maven管理项目,直接在pom.xml中添加Spring Context依赖,Maven会自动下载所有关联的依赖jar:
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.20</version> <!-- 替换为教程对应的版本,比如3.2.18.RELEASE --> </dependency> </dependencies>
添加后刷新Maven依赖即可。
额外修正:控制台输出结果
你的MainApp代码中只调用了obj.getMessage(),但没有把结果输出到控制台,所以即使运行成功也看不到内容。需要修改代码:
public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); Hello obj = (Hello) context.getBean("helloWorld"); // 添加输出语句 System.out.println(obj.getMessage()); }
内容的提问来源于stack exchange,提问作者servolt
相关产品推荐
相关产品推荐

