使用版本:

SpringBoot:2.1.18.RELEASESpringCloud: Greenwich.SR6SpringCloud Alibaba: 2.1.2.RELEASEjasypt-spring-boot-starter:2.1.2

问题说明:

通过jasypt对Nacos中的敏感配置项进行加密处理后,当更新nacos更新配置项时,后台会报错:

java.lang.IllegalArgumentException: Could not resolve placeholder 'project.version' in value "${project.version}"at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178)at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:239)at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210)at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:575)at java.util.Optional.map(Optional.java:215)at com.ulisesbocchio.jasyptspringboot.resolver.DefaultPropertyResolver.resolvePropertyValue(DefaultPropertyResolver.java:38)at com.ulisesbocchio.jasyptspringboot.resolver.DefaultLazyPropertyResolver.resolvePropertyValue(DefaultLazyPropertyResolver.java:42)at com.ulisesbocchio.jasyptspringboot.EncryptablePropertySource.getProperty(EncryptablePropertySource.java:20)at com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource.lambda$getProperty$0(CachingDelegateEncryptablePropertySource.java:34)at org.springframework.cache.concurrent.ConcurrentMapCache.lambda$get$0(ConcurrentMapCache.java:146)at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)at org.springframework.cache.concurrent.ConcurrentMapCache.get(ConcurrentMapCache.java:144)at com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource.getProperty(CachingDelegateEncryptablePropertySource.java:34)at com.ulisesbocchio.jasyptspringboot.wrapper.EncryptableMapPropertySourceWrapper.getProperty(EncryptableMapPropertySourceWrapper.java:31)at org.springframework.cloud.context.refresh.ContextRefresher.extract(ContextRefresher.java:255)at org.springframework.cloud.context.refresh.ContextRefresher.extract(ContextRefresher.java:231)at org.springframework.cloud.context.refresh.ContextRefresher.refreshEnvironment(ContextRefresher.java:91)at org.springframework.cloud.context.refresh.ContextRefresher.refresh(ContextRefresher.java:85)at org.springframework.cloud.endpoint.event.RefreshEventListener.handle(RefreshEventListener.java:72)at org.springframework.cloud.endpoint.event.RefreshEventListener.onApplicationEvent(RefreshEventListener.java:61)at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403)at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360)at com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1.innerReceive(NacosContextRefresher.java:133)at com.alibaba.nacos.api.config.listener.AbstractSharedListener.receiveConfigInfo(AbstractSharedListener.java:38)at com.alibaba.nacos.client.config.impl.CacheData$1.run(CacheData.java:203)at com.alibaba.nacos.client.config.impl.CacheData.safeNotifyListener(CacheData.java:233)at com.alibaba.nacos.client.config.impl.CacheData.checkListenerMd5(CacheData.java:174)at com.alibaba.nacos.client.config.impl.ClientWorker$LongPollingRunnable.run(ClientWorker.java:552)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)at java.util.concurrent.FutureTask.run(FutureTask.java)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)

原因分析:

Spring Boot 会加载classpath下的application.properties

而 SpringCloud Alibaba: 2.1.2.RELEASE中 nacos-api:1.2.1和nacos-client:1.2.1中

application.properties里面有 version=${project.version} ;

导致jasypt解析时,找不到值报错。

解决方案:

将SpringCloud Alibaba升级到2.1.4.RELEASE可以解决该问题。升级后nacos-api:1.4.1和nacos-client:1.4.1中去掉了application.properties。

Could not resolve placeholder ‘project.version‘ in value “${project.version}”相关推荐

  1. SpringBoot启动报错Could not resolve placeholder ‘XXX.XXX‘ in value

    SpringBoot启动项目时报错: Exception encountered during context initialization - cancelling refresh attempt: ...

  2. 全网最完美地解决使用spring boot的@Value(“${xxx}“)注解时报出的错误:Could not resolve placeholder ‘xxx‘ in value “${xxx}“

    文章目录 1. 复现问题 2. 分析问题 3. 解决问题 4. 其他解决方案 4.1 检测语法是否正确 4.2 检测配置文件中是否有进行配置 4.3 检测是否增加注解 4.4 检测代码中的书写方式 4 ...

  3. java.lang.IllegalArgumentException: Could not resolve placeholder ‘stu.age‘ in value “${stu.age}

    1.运行spring boot项目时出现这个错误,java.lang.IllegalArgumentException: Could not resolve placeholder 'stu.age' ...

  4. spring读取多个配置properties报错“Could not resolve placeholder“的解决方案

    spring读取多个配置properties报错"Could not resolve placeholder"的解决方案 参考文章: (1)spring读取多个配置properti ...

  5. Could not resolve placeholder jdbc.driver in string value ${jdbc.driver}

    applicationContext 加载properties类型的配置文件的问题 错误信息:Could not resolve placeholder 'jdbc.driver' in string ...

  6. There‘s no Qt version assigned to project xxx.vcxproj for configuration Debug/x64

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一. 分析错误原因 二.解决步骤 1.选择Qt版本 2.检查环境变量 3.重新构建工程 There's no Qt version assigned ...

  7. Springboot Could not resolve placeholder ‘spring.data.mongodb.database’ in value “${spring.data.mong

    Springboot Could not resolve placeholder 'spring.data.mongodb.database' in value "${spring.data ...

  8. 【解决方法汇总】SpringBoot项目报错 Could not resolve placeholder ‘‘ in value “${}“

    SpringBoot项目启动报错 Could not resolve placeholder 'show.tips.text' in value "${show.tips.text}&quo ...

  9. Could not resolve placeholder 占位符不能被解析

    Could not resolve placeholder 'active.logging.path' in value "${active.logging.path}" spri ...

最新文章

  1. ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始
  2. HTML5 标签、事件句柄属性以及浏览器兼容情况速查手册
  3. win8看不到win7局域网计算机名,实现Win7旗舰版与win8.1系统局域网里文件共享的设置方法【图】...
  4. php访问js文件不存在,php文件里js不能被执行
  5. python字符串结合操作符的使用
  6. hbuilder自述文件_一次修复一个自述文件
  7. c语言两个条件同时成立,为什么if的条件成立else内的条件成立两个程序同时执行...
  8. python数据类型—字符串
  9. 各种未授权访问漏洞的复现与利用
  10. 远程接入CBTS的应用
  11. keil5选择ST-Link Debugger时候setting点击不了问题
  12. 学习目录-自己动手写CPU
  13. vs2005+sql2005的新一天
  14. 机器学习笔记之R语言基础5(T,F检验)
  15. [声纹识别]基于MFCC的声纹识别算法
  16. 面向对象多项式求导总结
  17. Drupal中的Pathauto介绍(来自站长百科)
  18. 企业微信如何统计考勤?如何汇总?
  19. SEO从业者该何去何从呢?
  20. AD9914数字斜坡模式使用

热门文章

  1. diff函数求函数的导函数、偏导函数,及在某一点的导数、偏导数 --python
  2. win10网络可以ping 通,不能进网页
  3. 为人处事说话技巧思维
  4. DailyFi - 9.15|PrimeDAO 完成 200万美元种子轮融资,Paradigm 研究员发布新 NFT 碎片化产品...
  5. 联想服务器安装系统蓝屏怎么办,联想笔记本u盘装系统出现蓝屏怎么解决
  6. Tandem Repeats Finder:串联重复序列查找工具
  7. java实现两个时间的累加_java List 相邻两个数据累加,可以用stream的collectors.reducing实现么...
  8. BGP——基本概念4(路由引入、防环、路由通告原则、路由选路)
  9. 最近使用的一款session工具:sa-Token
  10. linux怎么移植安卓rom,【经验技巧】任意手机移植ROM 教程,超详细ROM 技术详细......