当我尝试关闭ElasticSearch客户端时发生java.lang.NoSuchMethodError异常?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1794)

当我尝试使用Java API 6.0关闭ElasticSearch客户端时,我在client.close()调用中得到以下异常:

Exception in thread "elasticsearch[_client_][generic][T#1]" java.lang.NoSuchMethodError: io.netty.bootstrap.Bootstrap.config()Lio/netty/bootstrap/BootstrapConfig;
at org.elasticsearch.transport.netty4.Netty4Transport.lambda$stopInternal$7(Netty4Transport.java:390)
at org.apache.lucene.util.IOUtils.close(IOUtils.java:89)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:36)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:46)
at org.elasticsearch.common.lease.Releasables.close(Releasables.java:51)
at org.elasticsearch.transport.netty4.Netty4Transport.stopInternal(Netty4Transport.java:373)
at org.elasticsearch.transport.TcpTransport.lambda$doStop$14(TcpTransport.java:927)
at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

我使用的Java代码:

        // on startup
    TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
            .addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"), 9300));

    // on shutdown
    client.close();
提问于
用户回答回答于

在使用es 5.5.1时,我在运行测试代码时遇到了同样的问题。我通过添加下面的maven dependency来解决它:

io.netty netty-all 4.1.25。最终测试

用户回答回答于

NoSuchMethodError表示你的依赖关系存在问题。Java API 6.0文档指出了这种Maven依赖关系:

<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>6.0.0</version>
</dependency>

上面那个的传递依赖是:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-transport</artifactId>
    <version>4.1.13.Final</version>
</dependency>

在版本4.1.13.Final类中io.netty.bootstrap.Bootstrap有一个config()返回值的方法BootstrapConfig

public final BootstrapConfig config()
  {
    return this.config;
  }

请检查mvn dependency:tree您是否使用了正确的版本io.netty:netty-transport

扫码关注云+社区

领取腾讯云代金券