arthas 执行ognl表达式ClassNotFoundException
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 对该问题解释,大意是自定义类加载器导致找不到类
https://github.com/alibaba/arthas/issues/71
解决办法:
第一步,查询指定类的classloader信息,命令为:sc -d xxxx,根据结果可以看到类对应classloader的hash值;
第二步,ognl命令指定classloader,命令为:ognl -c xxxx(classloader的hash值) xxx(表达式)
3 解决方案
- su app
- as.sh
- sc -d com.xxx.ApplicationContextHelper
找到 classLoaderHash 41a2befb - ognl -c 41a2befb ‘#context=@com.xxx.ApplicationContextHelper@appCtx,#context.getEnvironment().getProperty(“druid.datasource.password”)’
4 相关资料
https://github.com/alibaba/arthas/issues/71
https://blog.csdn.net/qq826654664jx/article/details/101512468
https://commons.apache.org/proper/commons-ognl/language-guide.html
arthas 执行ognl表达式ClassNotFoundException相关推荐
- Struts2漏洞分析之Ognl表达式特性引发的新思路
摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...
- struts2教程(9)--OGNL表达式使用
OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...
- 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式
前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...
- Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传
一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...
- OGNL表达式struts2标签“%,#,$”
http://www.blogjava.net/parable-myth/archive/2010/10/28/336353.html 一.什么是OGNL,有什么特点? OGNL(Object-Gra ...
- Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用
来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...
- Struts标签和OGNL表达式
Struts标签和OGNL表达式 1.OGNL通过索引访问ValueStack中的对象. [0].name [1].name 上面使用的索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索. ...
- Struts2中的OGNL表达式
基础知识(三) Struts2中的OGNL表达式 浅析值栈 ValueStack对象相当于一个栈,它贯穿整个Action的生命周期,每个Action类的对象实例都会拥有一个ValueStack对象 当 ...
- OGNL 表达式/ValueStack
文章目录 OGNL 是干什么用的 示例代码一 示例代码二 使用OGNL获取JavaBean对象的属性值 获取集合属性中元素的属性的值 XWork 中对 OGNL 的扩展 示例代码 Struts2 对 ...
最新文章
- 64 任务调度神器 Airflow
- mysql授权用户主机_MySQL用户授权(GRANT)
- 如何创建Kafka客户端:Avro Producer和Consumer Client
- XML中预定义好的实体
- 开发人员如何学习 Kubernetes
- oracle 11g release2版本jdbc,Oracle发布JDeveloper11gRelease2更新版
- 依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?
- 计算机应用技术专业课程改革方案,【计算机维护论文】计算机应用技术专业教学改革方案(共4015字)...
- Spring Boot war方式打包发布
- 零售分析用vba还是python_数据分析?Excel、VBA和Python?营销套路还是大势所趋!...
- 【Unity3D】初学加密技巧(反破解)
- 注册表故障恢复 必须使用记录或另一备份以恢复包含系统注册表数据的文件。恢复成功
- NB-IoT时域资源
- 【附源码】计算机毕业设计SSM民宿客房管理系统
- 微信支付、微信公众号接口认证方案
- localtime()
- 与普通仓库相比,自动化立体库的优缺点
- 64位windows10安装Sql server 2000
- vue uniapp 知识点整理
- 频繁跳槽真的好吗?十年资深HR告诉你背后的真相!!!
热门文章
- 植发搞笑图片_搞笑GIF段子:植发三天了,越来越粗壮了!!
- Win7中计算机管理窗口如何打开
- 还不看看嘛!互联网技术面试常问问题汇总及回答技巧总结,听说看过的都面试上大厂了~(doge)
- 【ANSYS Workbench仿真】如果后处理添加命令流显示渗透压力?
- 贵州移动乘“云”而上 助力大数据产业发展
- Pytorch实战 | P6 好莱坞明星图片识别(深度学习实践pytorch)
- encodeURI 和 decodeURI
- python 二维码解析
- EventLoop 事件循环
- 计算机自动获取IP地址流程详解