spring-boot - spring-boot-security 2.2.5 - java.lang.NoClassDefFoundError:org/bouncycastle/crypto/params/Argon2Parameters
问题描述
我正在使用 Spring Boot 安全版本 2.2.5.RELEASE,我正在使用 Argon2PasswordEncoder 作为我的密码编码器创建一个自定义密码编码器。
在此运行时,可以在 Argon2PasswordEncoder.java 中看到以下错误,我可以看到这两个导入丢失,
import org.bouncycastle.crypto.generators.Argon2BytesGenerator;
import org.bouncycastle.crypto.params.Argon2Parameters;
错误:
java.lang.NoClassDefFoundError: org/bouncycastle/crypto/params/Argon2Parameters$Builder
at org.springframework.security.crypto.argon2.Argon2PasswordEncoder.encode(Argon2PasswordEncoder.java:78) ~[spring-security-core-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at com.custom.CustomPasswordEncoder.encode(CustomPasswordEncoder.java:11)
请建议我想做什么,我是否缺少一些依赖项或它的 Spring Boot 版本问题。还有如何克服。非常感谢。
解决方案
我得到了这个问题。对于版本 2.2.5 springboot,我们需要显式添加 Argon2BytesGenerator 的依赖项,Argon2Parameters nt 发现问题,因为它不包含在此版本中。
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.64</version>
</dependency>
推荐阅读
- sql - 加快对具有单独列中的日期部分的表的选择查询
- c - LAPACKE 矩阵反演分段错误 C
- mysql - 在 Bluemix 专用平台的 MySQL 中导入 JSON 文档
- bash - 如何使用 Shell 将 txt 文件转换为 `json` 对象?
- c# - ILogger:记录方法:无法发送用户定义的变量
- javascript - 在本地存储中存储变量的值
- javascript - jQuery 只为被点击的元素运行函数
- python - 如何将 pyshark 数据包发送到特定的网络接口?
- python - Python3 + Gunicon 19.9 + Django 2.0 不打印我的日志,而是打印 django.request
- javascript - 如果存在未识别的运算符 javascript,则返回一个值