原项目pom中问题所在配置如下:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>3.2.2</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
zookeeper使用官方最新的3.8.1,在本地跑没问题。
打包在服务器上报错提示
Unable to canonicalize address localhost/<unresolved>:2181 because it's not resolvable
搜索了半天,大部分的文档都是address localhost<unresolved>:2181或者是server null
而我的这里出现了转义符,&it和/>,大致意思是客户端依赖的版本问题。
查看了一下dubbo-dependencies-zookeeper中依赖的zookeeper客户端是3.4.14,而我的注册中心使用的是3.8.1,开始认为3.4.14与3.8.1在本地能跑起来,打包后不应该跑步起来。
尝试了很多方法无果,于是尝试下载一个3.4.14的注册中心尝试。结果官方已经不提供3.4.14的下载了。最低版本是3.5.10,尝试使用3.5.10仍然无果。
于是在maven仓库查看了最新的dubbo-dependencies-zookeeper版本是3.2.3
无法刷新3.2.3,后来查看3.2.3中依赖的zookeeper版本仍然是3.4.14,放弃尝试最新的dubbo的zookeeper开发依赖。
能不能使用3.8.1的客户端呢。
于是在dubbo-dependencies-zookeeper中排除zookeeper。添加zookeeper最新的3.8.1的依赖。
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>3.2.2</version>
<type>pom</type>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
最后总结,不是所有的版本都是向下兼容,通信的两端尽量保证版本一致。