阿里dubbo2.6.0升级2.7.8版本适配问题

阿里dubbo2.6.0升级2.7.8

  1. 改pom.xml文件
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.7.8</version>
</dependency>
  1. 改java代码

将引用com.alibab.dubbo的地方改为com.apache.dubbo

启动服务后出现如下报错:

nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [dubbo.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment;
	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68) ~[spring-beans-3.2.18.RELEASE.jar:3.2.18.RELEASE]
........

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [dubbo.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment;
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:413) ~[spring-beans-3.2.18.RELEASE.jar:3.2.18.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335) ~[spring-beans-3.2.18.RELEASE.jar:3.2.18.RELEASE]
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) ~[spring-beans-3.2.18.RELEASE.jar:3.2.18.RELEASE]
	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:258) ~[spring-beans-3.2.18.RELEASE.jar:3.2.18.RELEASE]
	... 26 more
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment;
	at org.apache.dubbo.config.spring.schema.DubboBeanDefinitionParser.resolveAttribute(DubboBeanDefinitionParser.java:419) ~[dubbo-2.7.8.jar:2.7.8]
	at org.apache.dubbo.config.spring.schema.DubboBeanDefinitionParser.parse(DubboBeanDefinitionParser.java:85) ~[dubbo-2.7.8.jar:2.7.8]

项目中使用的spring版本比较老,是3.2.18版本,可以看到,启动后提示找不到 

org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()

我们先看下是哪里引用了,进入错误代码处,可以看到是at org.apache.dubbo.config.spring.schema.DubboBeanDefinitionParser.resolveAttribute(DubboBeanDefinitionParser.java:419) ~[dubbo-2.7.8.jar:2.7.8]处报错,打开对应的源码,有如下代码:

Environment environment = parserContext.getReaderContext().getEnvironment();

这个ParserContext是spring中用来解析XML文件的来,我们进入对应的spring-beans包,确实没有这个方法,这就说明我们使用的spring版本和dubbo-2.7.8版本不适配,如果我们需要继续使用dubbo新版本,就需要对spring进行升级,通过查找验证,发现spring4.1.1版本之后才开始有这个方法:

public final Environment getEnvironment() {
    return this.reader.getEnvironment();
}

那这里至少需要将spring升级至4.1.1版本才可以使用,重新引入spring版本,启动项目,服务政策运行。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值