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 对 ...
最新文章
- key php 转小写_PHP代码层防护与绕过
- Enthought Canopy中第三方软件包的安装(package manager中不含的包)
- C语言中,全局变量滥用的后果竟如此严重?
- 【工作感悟】成功入职阿里月薪45K
- 使用Blink SQL+UDAF实现差值聚合计算
- 《Linux内核设计与实现》读书笔记(2)--- 进程管理
- c语言中栈的作用,栈(Stack)的概念和应用及C语言实现
- mybatis使用和分析
- 华为交换机常用查询命令
- C语言运算符优先级表详解
- 多节点部署执行定时任务选举单一节点解决方案---redis
- 【七夕】是时候展现专属于程序员的“浪漫”了
- 新一代物联网商用全面铺开 NB-IoT擎起新智慧城市
- TESS NG微观交通仿真软件二次开发接口如何规划
- VMware网络NAT模式无法连接解决方法
- 家居家装行业人群洞察白皮书.pdf
- 复旦大学教授张军平:极端情况下,人工智能的尽头就是人工
- 英语学习APP—百词斩
- Weblogic Server打补丁方法步骤
- kali渗透之DC-2
热门文章
- 删除linux后,修复windows的启动项:MBRFix工具
- 使用Dart/Flutter语言开发的命令行文字RPG类型小游戏
- 堆(heap)系列_0x05:一张图剖析堆块分配和FreeLists的联系
- 使用yocto搭建 i.MX8QXP Linux 4.14.98_ga 板级开发包编译环境
- Python selenium库的基本使用
- Emwin常用API函数
- ibm websphere_IBM WebSphere开发者技术期刊,使用Tivoli Access Manager和WebSphere Portal配置单点登录
- 车联网解决方案、汽车CANBUS总线开发、车联网OBD、车载终端车联网平台研发设计、
- UG NX 12 对象选择
- 面试时,不知如何和面试官谈期望薪资