背景

猿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.18spring-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遇到的版本不兼容问题相关推荐

  1. springBoot集成 Elastic-job

    Elastic-job 是由当当网开源的轻量级无中心化定时任务解决方案,使用jar包的形式提供最轻量级的分布式任务的协调服务,外部依赖仅Zookeeper. 其中基本的概念是分片,任务的分布式执行,需 ...

  2. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  3. SpringBoot集成内存数据库Derby

    目标 在SpringBoot中集成内存数据库Derby. 为什么 像H2.hsqldb.derby.sqlite这样的内存数据库,小巧可爱,做小型服务端演示程序,非常好用.最大特点就是不需要你另外安装 ...

  4. IDEA中SpringBoot集成Swagger总结,思路清晰

    总结一下Swagger Swagger是什么? 现在比较流行的是前后端分离的开发方式,后端写好接口后撰写接口文档,前端根据接口文档调用接口进行开发. Swagger主要是自动生成接口文档的一个工具,并 ...

  5. springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)

    一.注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明      tags="说明该类的作用,可以在UI界面上看到的注解"    (也就是给类取别名) ...

  6. Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)

    SpringBoot集成Neo4j调试的时候报: org.neo4j.driver.exceptions.ClientException: The server does not support an ...

  7. SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决

    SpringBoot集成Es使用ElasticSearchTemplate7.x版本自动注入失败解决 错误: Caused by: org.springframework.beans.factory. ...

  8. Flayway mysql自动生成版本_Flyway详解及Springboot集成Flyway的详细教程

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Bu ...

  9. 【快速上手系列】使用Springboot集成Swagger2的简单使用测试

    [快速上手系列]使用Springboot集成Swagger2的简单使用测试 简介 Swagger2是为了解决企业中接口(api)中定义统一标准规范的文档生成工具. 尤其是前后端分离时对一些业务接口也不 ...

最新文章

  1. Yii2 获取URL的一些方法
  2. 分析大咖说:做一个转化率提升 2% 的成功官网改版案例
  3. dbms数据库管理系统_DBMS中的数据库语言
  4. 信息学奥赛一本通C++语言——1075:药房管理
  5. 目标检测分类损失函数——Cross entropy、Focal loss
  6. opencv 读取视频、打开摄像头、写入视频文件
  7. Gitlab项目迁移
  8. 人工智能-SVM 支持向量机
  9. 电脑壁纸尺寸比例_怎么设置桌面壁纸尺寸比例
  10. jQuery 实现页面关键字查询
  11. 使用Python分析统计《大秦帝国》人物及七国的出场次数 的顺序(前20)
  12. 【色彩管理】色彩管理之灰平衡
  13. 你真的知道如何使用Target.Count吗?
  14. 网吧电脑算完整的计算机系统么,怎么看网吧电脑的系统和位数?
  15. java连接达梦数据库_【达梦数据库】Activiti连接达梦数据库
  16. 文件夹重命名,快速修改多个文件夹名称
  17. 一篇不错的关于VSS的入门介绍
  18. LAMP兄弟连——PHP免费课开班了!(在线)
  19. June's English
  20. 交换机的116个知识点 (1)

热门文章

  1. 教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告
  2. 研究生开题报告评议意见计算机,对开题报告评议意见
  3. Quadro专业卡 FX1800显卡的性能 HPZ800工作站的显卡
  4. 基于java实现的超级马里奥游戏
  5. 腾讯云上攻防战事(二)丨漏洞收敛,使敌不知其所攻
  6. 皮一皮:戒网瘾专用手机...
  7. java发送邮件(java发送邮件正文带表格)
  8. 物联网运维-前端设备运维管理设计及解决方案
  9. [OC学习笔记]头文件的引用
  10. Eclipse中CVS界面功能描述 (二)