今天写在写dubbo demo的时候,发现无法解析dubbo-provider.xml里面的配置,原因是找不到dubbo.xsd。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
...
</beans>
搜了一下发现是http://code.alibabatech.com/schema/dubbo这个域名已经关闭了,网上的做法是到github上下载dubbo.xsd到本地,然后在ide中进行关联,我也照着做了。但是发现还是找不到dubbo.xsd,似乎本地配置没有生效。
网上还有一些其他的说法,比如没有导入jar包、jar包版本不对之类的,我导入的dubbo版本是maven仓库中最新的,但是我也不能验证到底哪个版本才正确。
搜了半天也没解决问题,后来上apache网站上直接复制xml开头:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://dubbo.apache.org/schema/dubbo
http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
发现这上面的地址就不是用阿里巴巴的地址了,相应的,我就把maven中的依赖换成了apache版本的dubbo:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.3</version>
</dependency>
再运行,还是报错,说找不到CuratorFrameworkFactory
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.CuratorFrameworkFactory
原因是没有添加curator-framework
依赖,加上(虽然不知道干嘛用的,还没来得及看,好像是跟zookeeper相关的):
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
再运行,又报错。。
Caused by: java.lang.ClassNotFoundException: org.apache.curator.framework.recipes.cache.TreeCacheListener
好吧,还是跟curator
有关的依赖,叫curator-recipes
,也加上:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>
最后终于跑起来了,后面还得研究一下这两个依赖的作用是啥。