Ubuntu 顺序查找 分布式服务 DHCP date events datagridview uicollectionview sms 郑州网站开发 photoshop cs3 教程 spark项目 jquery获取下一个元素 python转16进制 mysql入门 python测试 python程序实例 java对象 java中scanner java时间戳转换日期格式 java新建文件 java架构 java的安装 xp系统修复 subprocess 快捷精灵 多面硬币 python缩进规则 go程序设计语言 苏拉玛起义的任务线 jdk9下载 游戏linux正则表达式 只狼台词 数据结构与算法分析 光标变粗 dnf传说 英特尔显卡驱动官方 mxf是什么格式 dll注入器 只狼钟
当前位置: 首页 > 学习教程  > 编程语言

【Elasticsearch】java.lang.ClassNotFoundException: org.elasticsearch.client.core.CountRequest

2020/12/5 9:40:14 文章标签:

引言 之前在Elasticsearch搜索服务中增加了Count方法,可直接根据查询条件得到符合条件的总数,在搜索服务中也已经测试通过,但在引用了该服务的其他业务服务启动报错,如下: 排查 出现类似ClassNotFoundException这种错…

引言

之前在Elasticsearch搜索服务中增加了Count方法,可直接根据查询条件得到符合条件的总数,在搜索服务中也已经测试通过,但在引用了该服务的其他业务服务启动报错,如下:

在这里插入图片描述

排查

出现类似ClassNotFoundException这种错误,一般是引用的jar包有问题。搜索服务是用的6.8.6版本,并且该方法已经测试通过,所以想到的问题的原因是不是其他业务服务中引用的Elasticsearch版本并不是该版本的。
确实,发现业务服务中引用的elasticsearch版本并不是6.8.6,而是6.4.3,如下:

在这里插入图片描述

我在search工程中引入的是6.8.6,而在业务系统中引入search工程,版本确是6.4.3,解决此问题,启动报错的问题也就解决了。

原因

猜想是因为maven的继承关系影响了版本。所以从pom文件的parent节点出发查找真正原因,search工程中添加了parent节点,引用的是整个项目的父工程,父工程中统一引用了spring-boot-starter-parent,版本为2.1.9.RELEASE。

在这里插入图片描述

通过spring-boot-dependencies节点可跳转到具体的pom,可以发现对应的elasticsearch版本确实是6.4.3的,如下:

在这里插入图片描述

解决

问题原因找到了,解决方法也就很简单了。我们只需要在parent工程中,指定引入的elasticserch版本为6.8.6即可,如下:

在这里插入图片描述

指定版本后,再去查看其他业务系统会发现引入的elasticsearch版本是正确的了,并且启动报错问题也解决了。

在这里插入图片描述

总结

一个小问题,还是值得写篇博客记录下,因为之前也没有注意项目中引入的版本是否符合期望的,通过这次遇到的问题才让自己发现了这个需要关注的点。
所以如果以后再遇到类似的基础服务工程,并且又有对应的parent,还是需要看下其他工程引用的版本是不是真的是自己指定的。

本文链接: http://www.dtmao.cc/news_show_450054.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?