Couchbase DCP 客户端 0.10.0 失败 java.lang.NoSuchMethodError

Couchbase DCP Client 0.10.0 fails with java.lang.NoSuchMethodError

我正在开发具有以下版本的 DCP 客户端连接器。

每当我 运行 我的应用程序时,我都会遇到以下异常。我尝试更改这些库的版本,但还没有成功。如果有人能提供帮助,我们将不胜感激。

java.lang.NoSuchMethodError: com.couchbase.client.core.config.NodeInfo.hostname()Ljava/net/InetAddress;
    at com.couchbase.client.dcp.conductor.HttpStreamingConfigProvider.onNext(HttpStreamingConfigProvider.java:90) ~[dcp-client-0.10.0.jar:?]
    at com.couchbase.client.dcp.conductor.HttpStreamingConfigProvider.onNext(HttpStreamingConfigProvider.java:74) ~[dcp-client-0.10.0.jar:?]
    at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) ~[rxjava-1.2.7.jar:1.2.7]
    at rx.internal.operators.NotificationLite.accept(NotificationLite.java:135) ~[rxjava-1.2.7.jar:1.2.7]
    at rx.subjects.SubjectSubscriptionManager$SubjectObserver.emitNext(SubjectSubscriptionManager.java:253) ~[rxjava-1.2.7.jar:1.2.7]
    at rx.subjects.BehaviorSubject.onNext(BehaviorSubject.java:160) ~[rxjava-1.2.7.jar:1.2.7]
    at rx.observers.SerializedObserver.onNext(SerializedObserver.java:91) ~[rxjava-1.2.7.jar:1.2.7]
    at rx.subjects.SerializedSubject.onNext(SerializedSubject.java:67) ~[rxjava-1.2.7.jar:1.2.7]
    at com.couchbase.client.dcp.transport.netty.ConfigHandler.decodeChunk(ConfigHandler.java:96) ~[dcp-client-0.10.0.jar:?]
    at com.couchbase.client.dcp.transport.netty.ConfigHandler.channelRead0(ConfigHandler.java:76) ~[dcp-client-0.10.0.jar:?]
    at com.couchbase.client.dcp.transport.netty.ConfigHandler.channelRead0(ConfigHandler.java:38) ~[dcp-client-0.10.0.jar:?]
    at com.couchbase.client.deps.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:625) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:560) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:477) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:439) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.util.concurrent.SingleThreadEventExecutor.run(SingleThreadEventExecutor.java:131) ~[core-io-1.4.6.jar:?]
    at com.couchbase.client.deps.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) ~[core-io-1.4.6.jar:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]

一行解决:使用dcp-client版本0.10.0core-io版本1.4.4,这个问题就会消失。

我从 Couchbase 的朋友那里得到了答案;整个讨论都在这里 https://forums.couchbase.com/t/couchbase-dcp-client-0-10-0-fails-with-java-lang-nosuchmethoderror/13227

class NodeInfo 已在最新版本 core-io (v1.4.6) 中更改;方法 NodeInfo.hostName() returns 一个新的 class 称为 NetworkAddress。在以前的版本中,它返回 InetAddress。出于某种原因,Couchbase 人员没有更新 dcp-client 版本 0.10.0 以使用较新的 API。根据上面 link 中的讨论,他们将很快发布。