SpringBoot2.X+Elasticsearch6+x-pack启动报错

本文解决了一个常见的SpringBoot2.0+Elasticsearch6启动时的报错问题,详细分析了问题原因并提供了解决方案。问题出现在尝试使用已废弃的InetSocketTransportAddress类,这通常是因为项目中存在版本冲突,尤其是当同时使用ES的x-pack插件时。通过明确指定pom.xml中的Elasticsearch版本,问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot2.0+Elasticsearch6启动报错

问题描述

SpringBoot+Elasticsearch6启动时,Spring项目一直报错,找不到 java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddress
(我使用到了ES的x-pack插件,所以pom.xml文件中有这个jar包。如果没有用到这个插件,可以不用引入这个jar包)

问题分析

开始以为是确实缺少这个类,在网上也找了很多解决方案,总结起来无非就是pom里面引包引入的不全面。但是后来经过查询,发现InetSocketTransportAddress是Elasticsearch5.X版本时,需要根据ES的一些配置信息创建ES的client需要用到的类,而我当前引入的ES版本是6版本,按说生成client的时候已经不需要这个类了。但是看着报错信息,显然项目是用了ES5的这个版本。
有了这个怀疑后,打开项目的Maven依赖,果然发现
maven依赖
发现项目里的pom加载的依然是5.6X版本的。
但是本项目的Pom文件里,加载的都是Elasticsearch6的版本,pom文件如下:

<dependency>
		<groupId>org.elasticsearch.client</groupId>
		<artifactId>transport</artifactId>      
		<version>6.1.1</version>
</dependency>
<dependency>
     	<groupId>org.elasticsearch.client</groupId>
     	<artifactId>x-pack-transport</artifactId>          
     	<version>6.1.1</version>      
</dependency>
<dependency>
		<groupId>org.elasticsearch</groupId>
		<artifactId>elasticsearch</artifactId>
		<version>6.1.1</version>
</dependency>

之前同样的pom文件,在Spring1.5.X版本的时候,没有出现过这样的问题,所以怀疑是SpringBoot2.0导入了默认包导致的。查询SpringBoot2.0的包,(链接:https://github.com/spring-projects/spring-boot/blob/v2.0.5.RELEASE/spring-boot-project/spring-boot-dependencies/pom.xml
发现
spring-boot2.Xpom依赖包
所以怀疑是在Spring加载的时候,覆盖了本身我定义的配置。

解决方案

在自己项目的pom.xml文件中,显示声明elasticsearch的版本,如下

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.5.RELEASE</version>
        <elasticsearch.version>6.1.1</elasticsearch.version>
</parent>

问题得到解决,不进行报错
如果有其他同学遇到相关问题,还有别的解决方式,欢迎交流

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值