[杂货铺系列]SpringBoot集成ElasticJob遇到的版本不兼容问题
背景
猿Why昨天在项目工程中引入ElasticJob的时候碰到一个异常:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-11-20 17:06:54.923 [] [main] ERROR [LoggingFailureAnalysisReporter.java:40] o.s.b.d.LoggingFailureAnalysisReporter - ***************************
APPLICATION FAILED TO START
***************************Description:An attempt was made to call a method that does not exist. The attempt was made from the following location:org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.registerServiceWatcher(ZookeeperServiceDiscovery.java:183)The following method did not exist:org.apache.curator.framework.api.CreateBuilder.creatingParentsIfNeeded()Lorg/apache/curator/framework/api/ProtectACLCreateModeStatPathAndBytesable;The method's class, org.apache.curator.framework.api.CreateBuilder, is available from the following locations:jar:file:/D:/maven_repo/org/apache/curator/curator-framework/2.10.0/curator-framework-2.10.0.jar!/org/apache/curator/framework/api/CreateBuilder.classThe class hierarchy was loaded from the following locations:org.apache.curator.framework.api.CreateBuilder: file:/D:/maven_repo/org/apache/curator/curator-framework/2.10.0/curator-framework-2.10.0.jarAction:Correct the classpath of your application so that it contains a single, compatible version of org.apache.curator.framework.api.CreateBuilder2022-11-20 17:06:55.666 [] [Curator-Framework-0] INFO [CuratorFrameworkImpl.java:821] o.a.c.f.imps.CuratorFrameworkImpl - backgroundOperationsLoop exiting
项目中
springboot
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.1.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent>
dubbo
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.1.10</version>
</dependency>
elastic-job
<dependency><groupId>com.dangdang</groupId><artifactId>elastic-job-lite-spring</artifactId><version>2.1.5</version>
</dependency>
经过面向搜索引擎排查问题和Debug调试发现:
猿Why的代码中dubbo方面用到了org.apache.dubbo.config.annotation.DubboReference注解( @DubboReference
)去调用Dubbo服务。
Spring容器在进行Bean初始化处理的时候,出现找不到方法的情况,于是抛出异常,导致程序无法启动。
也就是下面这一行异常信息反映的信息
org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery.registerServiceWatcher(ZookeeperServiceDiscovery.java:183)
通过在dubbo的github社区,找到蛛丝马迹
<groupId>com.alibaba.spring</groupId><artifactId>spring-context-support</artifactId><version>1.0.10</version>
以上jar的这个版本,在对 @DubboReference
标注的Bean初始化的时候,对“zookeeper服务端和Client端版本不一致”的情况处理的不是太好。
所以需要对这个jar升级。
可以找到jar是在dubbo-spring-boot-starter
的依赖中,经过尝试,找到解决办法:
需要将dubbo-spring-boot-starter
升级到2.x的最高版本:2.7.18
,spring-context-support
便会跟着升级到1.0.11
想到更多
目前可以搜索到的ElasticJob相关的文章多数是基于2.x系列的,zookeeper的版本小于3.5系列,curator在2.10.0。猿Why在这里记录一下可行的版本组合:
<!--dubbo依赖--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>2.7.18</version></dependency><!-- 引入elastic-job-lite模块 --><dependency><groupId>com.dangdang</groupId><artifactId>elastic-job-lite-spring</artifactId><version>2.1.5</version></dependency>
如果遇到了找不到类、类中方法找不到等异常,大可进行jar排除,保留以上两个jar中的自有依赖。
另外,如果项目中不是像猿Why一样有历史包袱,大可以使用最新版本的组合(参考)。
[杂货铺系列]SpringBoot集成ElasticJob遇到的版本不兼容问题相关推荐
- springBoot集成 Elastic-job
Elastic-job 是由当当网开源的轻量级无中心化定时任务解决方案,使用jar包的形式提供最轻量级的分布式任务的协调服务,外部依赖仅Zookeeper. 其中基本的概念是分片,任务的分布式执行,需 ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- SpringBoot集成内存数据库Derby
目标 在SpringBoot中集成内存数据库Derby. 为什么 像H2.hsqldb.derby.sqlite这样的内存数据库,小巧可爱,做小型服务端演示程序,非常好用.最大特点就是不需要你另外安装 ...
- IDEA中SpringBoot集成Swagger总结,思路清晰
总结一下Swagger Swagger是什么? 现在比较流行的是前后端分离的开发方式,后端写好接口后撰写接口文档,前端根据接口文档调用接口进行开发. Swagger主要是自动生成接口文档的一个工具,并 ...
- springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)
一.注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" (也就是给类取别名) ...
- Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
SpringBoot集成Neo4j调试的时候报: org.neo4j.driver.exceptions.ClientException: The server does not support an ...
- SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决
SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决 错误: Caused by: org.springframework.beans.factory. ...
- Flayway mysql自动生成版本_Flyway详解及Springboot集成Flyway的详细教程
Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Bu ...
- 【快速上手系列】使用Springboot集成Swagger2的简单使用测试
[快速上手系列]使用Springboot集成Swagger2的简单使用测试 简介 Swagger2是为了解决企业中接口(api)中定义统一标准规范的文档生成工具. 尤其是前后端分离时对一些业务接口也不 ...
最新文章
- Yii2 获取URL的一些方法
- 分析大咖说:做一个转化率提升 2% 的成功官网改版案例
- dbms数据库管理系统_DBMS中的数据库语言
- 信息学奥赛一本通C++语言——1075:药房管理
- 目标检测分类损失函数——Cross entropy、Focal loss
- opencv 读取视频、打开摄像头、写入视频文件
- Gitlab项目迁移
- 人工智能-SVM 支持向量机
- 电脑壁纸尺寸比例_怎么设置桌面壁纸尺寸比例
- jQuery 实现页面关键字查询
- 使用Python分析统计《大秦帝国》人物及七国的出场次数 的顺序(前20)
- 【色彩管理】色彩管理之灰平衡
- 你真的知道如何使用Target.Count吗?
- 网吧电脑算完整的计算机系统么,怎么看网吧电脑的系统和位数?
- java连接达梦数据库_【达梦数据库】Activiti连接达梦数据库
- 文件夹重命名,快速修改多个文件夹名称
- 一篇不错的关于VSS的入门介绍
- LAMP兄弟连——PHP免费课开班了!(在线)
- June's English
- 交换机的116个知识点 (1)