在使用io.spring.platform管理依赖关系时,与elastic-job集成时出现错误(并不一定会出现,和使用platform的方式有关),项目无法启动,错误配置如下:
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Brussels-SR7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-core</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>com.dangdang</groupId>
<artifactId>elastic-job-lite-spring</artifactId>
<version>2.1.5</version>
</dependency>
产生如下的错误信息:
Caused by: java.lang.NoClassDefFoundError: org/apache/curator/framework/api/ErrorListenerPathable
原因是,elastic-job中的依赖中的 curator-recipes的版本出现了错误,为 2.11.1(由platform-bom的配置中生效),由于platform中的只对curator-recipes做出了配置,而未对 curator进行配置,导致 elastic-job 中的使用的curator版本为2.10.0,版本产生冲突。
那样就好解决了
解决方案有两种:
一:
以spring的文档给的方案是,重置version,但是必须有一个前提 ,你的应用的pom的parent 必须是 platform-bom才可以生效。elastic-job中的curator的版本号变量,两者是一致的,所以只要增加 <curator.version>即可实现重置。
你的应用的pom的parent 是 platform-bom,那么你就不需要做任何改变,因为两者的变量是一致的,因此不存在启动异常的问题。
二:
如果你的parent 不是 platform-bom,我想只能手动在自己的pom中添加依赖。我是maven小白一个,想必应该有更好的解决方案吧。