成功解决Failed to execute ognl, exception message: ognl.OgnlException,Arthas怎么实时查看一个静态变量的值

编程入门 行业动态 更新时间:2024-10-12 01:24:00

成功解决Failed to execute ognl, exception message: ognl.OgnlException,Arthas怎么实时查看一个静态<a href=https://www.elefans.com/category/jswz/34/1771380.html style=变量的值"/>

成功解决Failed to execute ognl, exception message: ognl.OgnlException,Arthas怎么实时查看一个静态变量的值

在使用arthas定位问题的时候,如果我们想使用ognl命令查看一个静态变量的值,我们可能会使用这样的ognl命令:

ognl -x 3 '@com.fdw.study.MasterDataRelation@TYPE_DEPOSITARY'

但是这样使用可能会遇到如下报错,Failed to execute ognl, exception message: ognl.OgnlException: Could not get static...

这是为什么呢?

原来使用这个命令是有前提的,前提是使用的是默认的类加载器,当你使用了自定义的类加载器后,自定义类加载器会导致找不到类 

所以正确的方式应该是先使用sc -d命令找到该类的类加载器,然后再指定类加载器的前提下去使用ognl命令,如下:

 sc -d com.fdw.study.MasterDataRelation

但当我们执行了这个命令也常常找不到这个类,会报错

 这是因为在java中,一个普通类只有在被使用到的时候才会被加载到JVM,并且只有在被用到的时候才会执行它的静态方法!!!所以要想把他加载进去,能够搜索到它的类加载器,你需要先执行与它相关的业务操作,把它加载进JVM才行,比如说调用一下它相关的接口,这样做之后就可以找到了

根据拿到的hashCode,指定类加载器,然后执行ognl命令就可以了

ognl -c 20ad9418 -x 3 '@com.fdw.study.MasterDataRelation@TYPE_DEPOSITARY'

注意:使用getstatic命令也可以查看静态变量

getstatic -c 20ad9418 com.fdw.study.MasterDataRelation TYPE_DEPOSITARY

更多推荐

成功解决Failed to execute ognl, exception message: ognl.OgnlException,Arthas怎么实时查看一个

本文发布于:2024-03-10 08:49:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727514.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:变量   静态   实时   ognl   execute

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!