1 问题描述
不希望通过编码的方式,想通过arthas 获取spring配置文件的属性值。
参考一篇文章https://my.oschina.net/u/4255537/blog/3357593 根据applicationcontext 工具类获取配置属性的方法。
实际执行时总是报找不到类, 但是通过sc 命令可以找到该类
[arthas@312]$ ognl '#context=@com.xxx.ApplicationContextHelper@appCtx,#context.getEnvironment().getProperty("author")'
Failed to execute ognl, exception message: ognl.OgnlException: Could not get static field appCtx from class com.xxx.ApplicationContextHelper [java.lang.ClassNotFoundException: Unable to resolve class: com.xxx.ApplicationContextHelper], please check $HOME/logs/arthas/arthas.log for more details.
[arthas@312]$ sc com.xxx.ApplicationContextHelper
com.xxx.ApplicationContextHelper
2 原因分析
搜到了 arthas 对该问题解释,大意是自定义类加载器导致找不到类
解决办法:
第一步,查询指定类的classloader信息,命令为:sc -d xxxx,根据结果可以看到类对应classloader的hash值;
第二步,ognl命令指定classloader,命令为:ognl -c xxxx(classloader的hash值) xxx(表达式)
3 解决方案
sc -d com.xxx.ApplicationContextHelper
找到 classLoaderHash 41a2befb
ognl -c 41a2befb ‘#context=@com.xxx.ApplicationContextHelper@appCtx,#context.getEnvironment().getProperty(“druid.datasource.password”)’
4 相关资料
**想了解更多开发和避坑技巧,经验,学习方法少走弯路,**欢迎关注本人的慕课专栏:
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦