记录一下spring 3.x 升级 spring 4.x 的一些问题

升级原因

因为一些原因需要升级项目jdk版本从1.7 升级到 1.8. 但是当前项目使用的是spring3.x 版本,并不兼容jdk1.7版本。所以需要升级为4.x版本的spring。

遇到的问题

org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [./xxxx.class]; nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn’t supported yet: file [./xxxx.class]; nested exception is java.lang.IllegalArgumentException

  • 这个产生的原因就是jdk版本跟你的spring版本不兼容。所以需要从spring 3升级到spring 4
<spring-version>3.2.3.RELEASE</spring-version>

改为

<spring-version>4.1.7.RELEASE</spring-version>

org.springframework.web.context.ContextLoader initWebApplicationContext 331 Context initialization failed java.lang.RuntimeException: java.io.IOException: invalid constant type: 15

  • 这个产生的原因是因为dubbo中依赖的javassist包的版本问题。所以我们要移除dubbo中的依赖。
 <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>dubbo</artifactId>
      <scope>compile</scope>
      <version>2.5.3</version>
	  <exclusions>
			<exclusion>
				<artifactId>javassist</artifactId>
				<groupId>org.javassist</groupId>
			</exclusion>
	  </exclusions>
 </dependency>

再加上

<dependency>
	<groupId>org.javassist</groupId>
	<artifactId>javassist</artifactId>
	<version>3.18.2-GA</version>
</dependency>

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring/spring.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring/spring.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V

遇到这个问题首先要检查你有没有安装spring-aop的依赖。如果没有那么添加即可。
如果安装了spring-aop的依赖还是这个错误,那么检查一下是否有spring-dao的依赖。如果有,移除spring-dao依赖即可。
原因是因为通过搜索TransactionInterceptor这个类,会发现会出现两个结果分别在spring-dao 和 spring-aop中。spring-dao会覆盖spring-aop。所以移除spring-dao即可解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值