IntelliJ运行Spring程序遇java.lang.NoSuchMethodError错误求助
解决Spring项目中的
java.lang.NoSuchMethodError问题 从你提供的代码和异常栈信息来看,这个错误几乎可以肯定是Spring依赖版本不兼容导致的——具体来说是ResourceEditorRegistrar的构造方法找不到,这通常是因为项目里混合了不同版本的Spring核心依赖包。
问题根源分析
你提到引入了spring-core、spring-beans、spring-osgi-core,但这里有两个关键问题:
spring-osgi-core是专为OSGi环境设计的依赖,你的简单控制台Spring项目完全不需要它,它反而可能引入低版本的Spring核心依赖,和你手动引入的版本冲突。- 即使保留必要依赖,若没有统一版本,不同Spring组件的版本不一致也会导致类加载时出现方法缺失的情况。
具体解决方案
- 移除不必要的依赖:删掉
pom.xml中的spring-osgi-core依赖,你的项目只需要spring-core、spring-beans、spring-context这三个核心依赖就足够运行。 - 统一Spring依赖版本:在
pom.xml中用属性统一管理版本,避免版本混乱,示例配置如下:<properties> <spring.version>5.3.30</spring.version> <!-- 选一个稳定的5.x版本,适配你的代码 --> </properties> <dependencies> <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> </dependencies> - 清理并重建项目:
- 在IntelliJ中点击右侧Maven面板的
Reload All Maven Projects,重新加载依赖。 - 执行
mvn clean install命令,清理旧编译文件并重新构建。 - 也可以通过IntelliJ的
Build -> Clean Project+Build -> Rebuild Project完成清理重建。
- 在IntelliJ中点击右侧Maven面板的
- 检查重复依赖:打开
File -> Project Structure -> Libraries,如果发现多个版本的Spring Jar包,删除不匹配的旧版本。
代码正确性验证
你的业务代码本身没有问题:
Student类的setter/getter方法符合Spring注入要求,displayInfo逻辑正常。applicationContext.xml的Bean配置和属性注入完全正确。MainClass加载上下文、获取Bean的代码没有错误。
解决依赖冲突后,运行MainClass.main()应该会正常输出Hello Piyush。
内容的提问来源于stack exchange,提问作者Piyush Shrivastava
相关产品推荐
相关产品推荐

