Elasticsearch java.lang.ClassNotFoundException: org.elasticsearch.common.transport.InetSocketTrans...

本文详细记录了在使用SpringBoot连接Elasticsearch时遇到的ClassNotFoundException错误,具体为找不到InetSocketTransportAddress类的问题及解决过程。通过添加transport-netty4-client依赖,成功解决了连接问题。

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

在做Elasticsearch 版本升级的时候,报出了
java.lang.ClassNotFoundException: org.elasticsearch.common.transport.InetSocketTransportAddress 这个错误,在此记录一下解决方法

开发环境
IntelliJ IDEA 2018.1.6
maven3.3.3 SpringBoot 2.0.2.RELEASE ElasticSearch 6.1.1 
连接ElasticSearch 代码
@Value("${spring.data.elasticsearch.cluster-name}")
    private static String clusterName; @Value("${spring.data.elasticsearch.cluster-nodes}") private static String host; @Value("${spring.data.elasticsearch.properties.port}") private static Integer port; /** 构建Settings 对象 */ private static Settings settings = Settings.builder().put("cluster.name", clusterName).build(); /** TransportClient 对象, 用于连接ES集群 */ private static volatile TransportClient client; /** * 同步synchronized(*.class)代码块的作用和synchronized static方法作用一样, * 对当前对应的*.class 进行持锁, static方法和.class 一样都是锁的该类本身,同一个监听器 * @return */ public static TransportClient getClient(){ if(client == null){ synchronized (TransportClient.class){ client = new PreBuiltTransportClient(settings); try { String[] allHost = host.split(","); for (String str:allHost) { client.addTransportAddresses(new TransportAddress(InetAddress.getByName(str), port)); } } catch (UnknownHostException e) { e.printStackTrace(); } } } return client; } 
错误日志
Exceptionin thread "main" java.lang.NoClassDefFoundError: org/elasticsearch/common/transport/InetSocketTransportAddress at org.elasticsearch.transport.Netty4Plugin.getSettings(Netty4Plugin.java:55) at org.elasticsearch.plugins.PluginsService.lambda$getPluginSettings$0(PluginsService.java:82) at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:267) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) at org.elasticsearch.plugins.PluginsService.getPluginSettings(PluginsService.java:82) at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:135) at org.elasticsearch.client.transport.TransportClient.<init>(TransportClient.java:262) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:128) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:114) at org.elasticsearch.transport.client.PreBuiltTransportClient.<init>(PreBuiltTransportClient.java:104) at com.zichan360.fica.controller.TestController.getClient(TestController.java:49) at com.zichan360.fica.controller.TestController.getAdminClient(TestController.java:64) at com.zichan360.fica.controller.TestController.isExists(TestController.java:79) at com.zichan360.fica.controller.TestController.main(TestController.java:68) Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.transport.InetSocketTransportAddress at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 19 more
解决方法

添加 transport-netty4-client maven 依赖之后可以成功获取到连接

<dependency> <groupId>org.elasticsearch.plugin</groupId> <artifactId>transport-netty4-client</artifactId> <version>6.1.1</version> </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑点燃希望

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值