spring3的一个报错,原因是maven依赖包冲突,有重复的依赖。

本文记录了一次Spring框架启动时出现的严重错误,该错误源于不同版本的Spring组件之间的不兼容。作者通过调整pom.xml文件中Spring核心库的依赖解决了问题,并探讨了Maven依赖管理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错如下:
严重: Context initialization failed
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.context.support.XmlWebApplicationContext]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:339)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:281)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
	at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62)
	at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
	at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42)
	at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44)
	at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42)
	at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101)
	at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
	at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.createEnvironment(AbstractRefreshableWebApplicationContext.java:139)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:227)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:217)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:82)
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:51)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.<init>(AbstractRefreshableWebApplicationContext.java:94)
	at org.springframework.web.context.support.XmlWebApplicationContext.<init>(XmlWebApplicationContext.java:62)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
	... 19 more
2012-2-22 10:55:32 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.context.support.XmlWebApplicationContext]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:162)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:339)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:281)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
	at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62)
	at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53)
	at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42)
	at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44)
	at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42)
	at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101)
	at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54)
	at org.springframework.web.context.support.StandardServletEnvironment.<init>(StandardServletEnvironment.java:43)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.createEnvironment(AbstractRefreshableWebApplicationContext.java:139)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:227)
	at org.springframework.context.support.AbstractApplicationContext.<init>(AbstractApplicationContext.java:217)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.<init>(AbstractRefreshableApplicationContext.java:82)
	at org.springframework.context.support.AbstractRefreshableConfigApplicationContext.<init>(AbstractRefreshableConfigApplicationContext.java:51)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.<init>(AbstractRefreshableWebApplicationContext.java:94)
	at org.springframework.web.context.support.XmlWebApplicationContext.<init>(XmlWebApplicationContext.java:62)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
	... 19 more
2012-2-22 10:55:32 org.apache.catalina.core.StandardContext start

################################################################################################################

我的pom.xml如下:
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>org.springframework.core</artifactId>
			<version>3.0.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.1.1.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.0.6</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.0.2</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>
		<dependency>
			<groupId>jdbc.mysql</groupId>
			<artifactId>mysql-connector</artifactId>
			<version>5.1.5</version>
		</dependency>
	</dependencies>
################################################################################################################
我把
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>org.springframework.core</artifactId>
		<version>3.0.6.RELEASE</version>
	</dependency>
删掉后,就不报错了。可能原因是,spirng-web已经依赖了org.springframework.core,这样就重复依赖了。可问题是,徐晓斌的《maven实战》5.7节说,maven会自己调解依赖的啊?不解,求解释。

参考了:http://forum.springsource.org/showthread.php?113485-java-lang-NoSuchMethodError-org-springframework-core-convert-converter-Convert-erRegi













                
<think>我们之前讨论了在SpringBoot项目中引入commons-io依赖,现在用户遇到了Maven依赖问题,具体是添加commons-io依赖时出现报错。根据用户提供的引用,报错可能有两种情况:1.引用[1]:commons-io版本冲突,用户可能同时引入了不同版本的commons-io,或者有其他依赖传递了不同版本的commons-io。2.引用[2]:可能是网络问题导致无法从Maven仓库(如阿里云镜像)下载依赖。因此,解决思路分为两部分:A.解决版本冲突B.检查网络和仓库配置下面详细说明:</think> ### 解决 Maven 中 Commons IO 依赖报错问题指南 #### 一、确认依赖冲突来源 1. **执行依赖树分析**:使用 Maven 命令找出冲突版本 ```bash mvn dependency:tree -Dincludes=commons-io ``` 这会显示所有依赖传递关系(示例如下): ``` [INFO] \- org.example:sub-module:jar:1.0 [INFO] \- commons-io:commons-io:jar:2.5:compile [INFO] \- org.apache.tomcat:tomcat-catalina:jar:9.0.45 [INFO] \- commons-io:commons-io:jar:1.4:compile <-- 冲突版本 ``` 2. **定位冲突点**: - 当出现多个版本的 commons-io(如示例中的 2.5 和 1.4) - Maven 遵循"**最近定义原则**",可能选择了旧版本 #### 二、版本冲突解决方案 1. **强制指定版本**(推荐):在 `<dependencyManagement>` 中添加 ```xml <dependencyManagement> <dependencies> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> <!-- 最新稳定版 --> </dependency> </dependencies> </dependencyManagement> ``` 2. **排除旧版本依赖**: ```xml <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-catalina</artifactId> <exclusions> <exclusion> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> </exclusion> </exclusions> </dependency> ``` #### 三、网络问题解决方案 > 引用[2]提到的错误`Could not transfer artifact...`通常由网络引起 ```bash [ERROR] Failed to execute goal: Could not transfer artifact commons-io:commons-io:pom:2.5 from/to alimaven... [^2] ``` 1. **更换镜像源**: ```xml <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 2. **清理本地仓库缓存**: ```bash mvn dependency:purge-local-repository ``` 3. **添加直接依赖**: ```xml <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> ``` #### 四、验证解决方案 1. **执行依赖检查**: ```bash mvn clean install -U ``` 2. **检查实际使用的版本**: ```java String version = IOUtils.class.getPackage().getImplementationVersion(); System.out.println("Commons IO版本: " + version); // 应输出2.11.0 ``` #### 五、最佳实践建议 1. **定期更新依赖**:使用`mvn versions:display-dependency-updates`检查更新 2. **使用 BOM 管理**:在 Spring Boot 项目中: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.0</version> <type>pom</type> <scope>import</scope> </dependency> ``` > Spring Boot BOM 默认包含兼容的 commons-io 版本[^3] 3. **IDE 辅助**:使用 IDEA 的 Maven Helper 插件可视化分析依赖冲突 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值