NoSuchMethodError Couchbase 2.5.8 Spring 引导启动错误
NoSuchMethodError Couchbase 2.5.8 Spring Boot Startup Error
我们在 Spring 启动应用程序(微服务)中使用了 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 引导中可用的依赖项,但随后出现超时异常。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-couchbase</artifactId>
</dependency>
Couchbase 存储桶在 PCF 中创建为服务并绑定到服务。
[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.operationComplete()
非常感谢任何帮助。
您可能还需要将 core-io
升级到 1.5.6 或更高版本。
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>core-io</artifactId>
<version>1.5.8</version>
</dependency>
NoSuchMethodError
被抛出,因为 this change 已提交。
此问题是由于 Spring 云依赖项造成的。我们组织的 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>
一旦我更新了这些依赖项,它就开始工作了。
我们在 Spring 启动应用程序(微服务)中使用了 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 引导中可用的依赖项,但随后出现超时异常。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-couchbase</artifactId>
</dependency>
Couchbase 存储桶在 PCF 中创建为服务并绑定到服务。
[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.operationComplete()
非常感谢任何帮助。
您可能还需要将 core-io
升级到 1.5.6 或更高版本。
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>core-io</artifactId>
<version>1.5.8</version>
</dependency>
NoSuchMethodError
被抛出,因为 this change 已提交。
此问题是由于 Spring 云依赖项造成的。我们组织的 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>
一旦我更新了这些依赖项,它就开始工作了。