我们在Spring boot应用程序(微服务)中使用Couchbase DB,它在PCF中启动和应用程序崩溃时提供了一个NoSuchMethodError
使用的Couchbase SDK是2.5.8
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>java-client</artifactId>
<version>2.5.8</version>
</dependency>
RxJava版本为1.1.10。
使用以下代码创建CouchbaseEnvironment
CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
.sslEnabled(true).bootstrapHttpSslPort(18091)
.sslKeystoreFile(Preconditions.checkNotNull(environment.getProperty("couchbase.ssl.keystore")))
.sslKeystorePassword(Preconditions.checkNotNull(environment.getProperty("couchbase.ssl.keystore.password")))
.connectTimeout(50000)
.kvTimeout(50000)
.build();
我们得到的异常如下
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.couchbase.client.java.env.DefaultCouchbaseEnvironment]: Factory method 'couchbaseEnvironment' threw exception; nested exception is java.lang.NoSuchMethodError: com.couchbase.client.java.env.DefaultCouchbaseEnvironment$Builder.kvEndpoints(I)Lcom/couchbase/client/java/env/DefaultCouchbaseEnvironment$Builder;
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] ... 26 common frames omitted
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] Caused by: java.lang.NoSuchMethodError: com.couchbase.client.java.env.DefaultCouchbaseEnvironment$Builder.kvEndpoints(I)Lcom/couchbase/client/java/env/DefaultCouchbaseEnvironment$Builder;
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration$CouchbaseConfiguration.initializeEnvironmentBuilder(CouchbaseAutoConfiguration.java:102) ~[spring-boot-autoconfigure-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
2018-05-18T16:02:56.889+05:30 [APP/PROC/WEB/0] [OUT] at org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration$CouchbaseConfiguration.couchbaseEnvironment(CouchbaseAutoConfiguration.java:64) ~[spring-boot-autoconfigure-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
也尝试使用Spring boot中可用的依赖项,但是得到了超时异常。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-couchbase</artifactId>
</dependency>
Couchbase存储桶在PCF中创建为Service并绑定到service。
[org/springframework/boot/autoconfigure/couchbase/CouchbaseAutoConfiguration$CouchbaseConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.couchbase.client.java.Bucket]: Factory method 'couchbaseClient' threw exception; nested exception is java.lang.RuntimeException: java.util.concurrent.TimeoutException
2018-05-18T12:46:22.497+05:30 [APP/PROC/WEB/0] [OUT] 2018-May-18 07:16:22.496 WARN [cb-io-1-1] c.c.c.c.e.Endpoint - [null][KeyValueEndpoint]: Generic Failure.
2018-05-18T12:46:22.505+05:30 [APP/PROC/WEB/0] [OUT] 2018-May-18 07:16:22.504 WARN [cb-io-1-1] c.c.c.c.e.Endpoint - null
2018-05-18T12:46:22.520+05:30 [APP/PROC/WEB/0] [OUT] 2018-May-18 07:16:22.519 WARN [cb-io-1-1] c.c.c.d.i.n.u.c.DefaultPromise - An exception was thrown by com.couchbase.client.core.endpoint.AbstractEndpoint$4$1.operationComplete()
任何帮助都是非常感谢的。
发布于 2018-08-17 10:12:10
这个问题是由Spring Cloud依赖引起的。我们组织的PCF升级到了Spring Cloud Dependencies的最新版本,当我升级到最新版本时,它工作得很好
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RC2</spring-cloud.version>
</properties>
之前我使用的是以下版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Dalston.SR4</spring-cloud.version>
</properties>
一旦我更新了这些依赖项,它就开始工作了。
发布于 2018-05-28 10:22:54
您可能还需要将core-io
升级到1.5.6或更高版本。
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>core-io</artifactId>
<version>1.5.8</version>
</dependency>
由于提交了this change,因此引发了NoSuchMethodError
。
https://stackoverflow.com/questions/50409710
复制相似问题