java - 升级到 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 调用。我已经设法将问题隔离到导致问题的单行代码。
解决方案
推荐阅读
- vue.js - VueJs,从连接元素调用方法
- angular - 如何找到在 nativescript 抽屉导航模板中声明 scss 文件的位置
- powerbi - 如何复制在 DAX 中创建的表以在 Power Query 中使用以进行转换?
- sql - 按以数字和字符串开头的列对 SQL Server 表进行数字排序
- tinymce - 如何使用 TinyMCE 5 在顶部和底部放置 2 个工具栏功能区
- javascript - 目标类元素而不是带有闪烁动画脚本的文档正文
- flutter - 使用 mockito 进行导航测试时出错
- python - Python区分返回的元组和多个值
- laravel - 如何在 dompdf 中编写梵文脚本?
- python - How to download Glut for PyOpenGL, error Attempt to call an undefined function glutInit, 尝试了很多解决方案,都不行