一、问题描述

项目使用jasypt进行加解密,配置中心的mysql密码值使用ENCRYPT()加密,如下所示:
在这里插入图片描述
但是项目启动时报解密错误:

Failed to bind properties under 'spring.datasource.password' to java.lang.String

使用版本:
jasypt-spring-boot-starter:3.0.4
spring-boot-starter:2.7.18

二、原因

我使用的是jdk1.8.0版本,其中jdk1.8.0又细分了多个版本,jasypt加解密需要要求jdk1.8.0u161以上的版本,但是我的jdk版本是jdk1.8.0u151 低于jdk1.8.0u161,所以我决定改用更高级的jdk版本

三、解决

3.1 更换高版本的jdk

准备更换jdk1.8.0u381版本

3.1.1 下载

jdk下载地址:
链接: JDK 8u211 and later
链接: JDK 8u202 and earlier

在这里插入图片描述

3.1.2 安装

安装jdk步骤略过
新安装的jdk路径:D:\softInstall\jdk1.8u381
jre路径:D:\softInstall\jre1.8u381

3.1.3 配置环境变量切换jdk

因为我本地已经安装了jdk18.0u151版本,现在新安装了一个jdk18.0u381版本,需要切换到新版本。

参考文章:
链接: https://blog.csdn.net/qq_42109746/article/details/118598334

3.1.3.1 新建系统变量

新建一个系统变量JAVA_HOME_1.8_381,变量值指向新jdk安装路径D:\softInstall\jdk1.8u381
在这里插入图片描述

3.1.3.2 编辑JAVA_HOME变量

编辑JAVA_HOME变量,变量值引用刚才新增的系统变量JAVA_HOME_1.8_381
在这里插入图片描述
修改后效果:
在这里插入图片描述

3.1.3.3 修改java运行时环境

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.1.3.4 删除运行程序

删除C:\Program Files (x86)\Common Files\Oracle\Java\javapath_target_12456796目录下的与java相关的运行程序
在这里插入图片描述

3.1.3.5 修改注册表

从注册表(运行regedit)中删除jdk的默认启动的版本。
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoftJava Development KitCurrentVersion项的值和Java Runtime EnvironmentCurrentVersion项的值,将这两项的值都设置为空即可
在这里插入图片描述
在这里插入图片描述

3.1.3.6 验证

java -version查看版本:
在这里插入图片描述
看到是最新的表示修改成功

3.1.3.7 idea修改jdk

在这里插入图片描述
在这里插入图片描述

3.2 其他方式

可以参考一下文章,开启安全策略:
参考文章:链接: https://www.jianshu.com/p/7eba0fc033d8

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐