首页 > 解决方案 > 升级到 couchbase java-client 2.6.1 时遇到问题

问题描述

将 couchbase java-client 升级到 2.6.1 后,应用程序启动时出现以下错误:

exception is java.lang.NoClassDefFoundError: com/couchbase/client/encryption/CryptoManager

经过快速调查,似乎从 2.6.0 开始添加了对字段级加密的支持 。

问题似乎是以下传递依赖:

   <dependency>
        <groupId>com.couchbase.client</groupId>
        <artifactId>encryption</artifactId>
        <version>${encryptionextension.version}</version>
        <optional>true</optional>
    </dependency>

它被标记为可选,但是,它被声明,DefaultCouchbaseEnvironment因此不能是可选的。

这个问题的快速解决方法是显式地将“加密”传递依赖添加到类路径中。然而,这似乎是一个错误,它将迫使所有客户端遇到相同的问题。

更新 重现该问题的最简单方法是调用以下代码:

DefaultCouchbaseEnvironment.class.getDeclaredMethods();

此代码在将 coucbase 环境加载为 spring bean 时由 spring 调用。我已经设法将问题隔离到导致问题的单行代码。

标签: javacouchbase

解决方案


推荐阅读