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 解决方案

  1. su app
  2. as.sh
  3. sc -d com.xxx.ApplicationContextHelper
    找到 classLoaderHash 41a2befb
  4. 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相关推荐

  1. Struts2漏洞分析之Ognl表达式特性引发的新思路

    摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...

  2. struts2教程(9)--OGNL表达式使用

    OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...

  3. 为了熟练掌握动态SQL你必须要知道Mybatis中的OGNL表达式

    前言 OGNL是个什么东西?很多刚入门Java的同学会有点陌生.但是在Structs流行的时代OGNL可是必会的数据渲染技术.它全称Object Graph Navigation Language,作 ...

  4. Struts2框架--学习笔记(下):OGNL表达式、值栈操作、拦截器、struts2标签、文件上传

    一.OGNL概述:OGNL是一种表达式 (1)在struts2中操作值栈数据. (2)一般把ognl在struts2中操作,和struts2标签一起使用操作值栈. (3)ognl不是strut2的一部 ...

  5. OGNL表达式struts2标签“%,#,$”

    http://www.blogjava.net/parable-myth/archive/2010/10/28/336353.html 一.什么是OGNL,有什么特点? OGNL(Object-Gra ...

  6. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    来自:http://blog.csdn.net/love_you_99/article/details/8184797 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极 ...

  7. Struts标签和OGNL表达式

    Struts标签和OGNL表达式 1.OGNL通过索引访问ValueStack中的对象. [0].name [1].name 上面使用的索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索. ...

  8. Struts2中的OGNL表达式

    基础知识(三) Struts2中的OGNL表达式 浅析值栈 ValueStack对象相当于一个栈,它贯穿整个Action的生命周期,每个Action类的对象实例都会拥有一个ValueStack对象 当 ...

  9. OGNL 表达式/ValueStack

    文章目录 OGNL 是干什么用的 示例代码一 示例代码二 使用OGNL获取JavaBean对象的属性值 获取集合属性中元素的属性的值 XWork 中对 OGNL 的扩展 示例代码 Struts2 对 ...

最新文章

  1. 64 任务调度神器 Airflow
  2. mysql授权用户主机_MySQL用户授权(GRANT)
  3. 如何创建Kafka客户端:Avro Producer和Consumer Client
  4. XML中预定义好的实体
  5. 开发人员如何学习 Kubernetes
  6. oracle 11g release2版本jdbc,Oracle发布JDeveloper11gRelease2更新版
  7. 依赖项出现感叹号怎么办_SpringBoot中如何对依赖进行管理?
  8. 计算机应用技术专业课程改革方案,【计算机维护论文】计算机应用技术专业教学改革方案(共4015字)...
  9. Spring Boot war方式打包发布
  10. 零售分析用vba还是python_数据分析?Excel、VBA和Python?营销套路还是大势所趋!...
  11. 【Unity3D】初学加密技巧(反破解)
  12. 注册表故障恢复 必须使用记录或另一备份以恢复包含系统注册表数据的文件。恢复成功
  13. NB-IoT时域资源
  14. 【附源码】计算机毕业设计SSM民宿客房管理系统
  15. 微信支付、微信公众号接口认证方案
  16. localtime()
  17. 与普通仓库相比,自动化立体库的优缺点
  18. 64位windows10安装Sql server 2000
  19. vue uniapp 知识点整理
  20. 频繁跳槽真的好吗?十年资深HR告诉你背后的真相!!!

热门文章

  1. 植发搞笑图片_搞笑GIF段子:植发三天了,越来越粗壮了!!
  2. Win7中计算机管理窗口如何打开
  3. 还不看看嘛!互联网技术面试常问问题汇总及回答技巧总结,听说看过的都面试上大厂了~(doge)
  4. 【ANSYS Workbench仿真】如果后处理添加命令流显示渗透压力?
  5. 贵州移动乘“云”而上 助力大数据产业发展
  6. Pytorch实战 | P6 好莱坞明星图片识别(深度学习实践pytorch)
  7. encodeURI 和 decodeURI
  8. python 二维码解析
  9. EventLoop 事件循环
  10. 计算机自动获取IP地址流程详解