亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

arthas 執行ognl表達式ClassNotFoundException

標簽:
Java

1 问题描述

不希望通过编码的方式,想通过arthas 获取spring配置文件的属性值。

参考一篇文章https://my.oschina.net/u/4255537/blog/3357593 根据applicationcontext 工具类获取配置属性的方法。

实际执行时总是报找不到类, 但是通过sc 命令可以找到该类

[arthas@312]$ ognl '#[email protected]@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 ‘#[email protected]@appCtx,#context.getEnvironment().getProperty(“druid.datasource.password”)’

4 相关资料


**想了解更多开发和避坑技巧,经验,学习方法少走弯路,**欢迎关注本人的慕课专栏:

點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
3858
獲贊與收藏
1468

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消