Corda 项目中的 NoSuchMethodError 异常

NoSuchMethodError Exception in Corda Project

在我们的 Corda 项目中,我们使用 FlowExternalAsyncOperation 与外部服务进行交互。当通过 Corda 节点 cli 调用时,流能够与外部服务交互。我们已经实现了一个独立的 rpc 客户端来调用流。尝试通过 rpc 连接启动节点时出现以下错误。下面是错误的堆栈跟踪

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
    at net.corda.client.rpc.internal.RPCClientProxyHandler.createRpcObservableMap(RPCClientProxyHandler.kt:205)
    at net.corda.client.rpc.internal.RPCClientProxyHandler.<init>(RPCClientProxyHandler.kt:168)
    at net.corda.client.rpc.internal.RPCClientProxyHandler.<init>(RPCClientProxyHandler.kt:108)
    at net.corda.client.rpc.internal.RPCClient$start.invoke(RPCClient.kt:90)
    at net.corda.client.rpc.internal.RPCClient$start.invoke(RPCClient.kt:32)
    at net.corda.core.internal.InternalUtils.logElapsedTime(InternalUtils.kt:224)
    at net.corda.core.internal.InternalUtils.logElapsedTime(InternalUtils.kt:214)
    at net.corda.client.rpc.internal.RPCClient.start(RPCClient.kt:72)
    at net.corda.client.rpc.CordaRPCClient.start(CordaRPCClient.kt:620)
    at net.corda.client.rpc.CordaRPCClient.start(CordaRPCClient.kt:575)
    at net.corda.client.rpc.CordaRPCClient.start(CordaRPCClient.kt:529)
    at net.corda.client.rpc.CordaRPCClient.start$default(CordaRPCClient.kt:527)
    at net.corda.client.rpc.CordaRPCClient.start(CordaRPCClient.kt)

将解决方案放在答案中。 该问题主要是由于依赖项中的版本不匹配造成的。这种情况下可能有同一个库的两个不同版本。可以使用 gradle.

排除其中之一

示例:

compile('org.springframework.boot:spring-boot-starter-web') {    
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}