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. key php 转小写_PHP代码层防护与绕过
  2. Enthought Canopy中第三方软件包的安装(package manager中不含的包)
  3. C语言中,全局变量滥用的后果竟如此严重?
  4. 【工作感悟】成功入职阿里月薪45K
  5. 使用Blink SQL+UDAF实现差值聚合计算
  6. 《Linux内核设计与实现》读书笔记(2)--- 进程管理
  7. c语言中栈的作用,栈(Stack)的概念和应用及C语言实现
  8. mybatis使用和分析
  9. 华为交换机常用查询命令
  10. C语言运算符优先级表详解
  11. 多节点部署执行定时任务选举单一节点解决方案---redis
  12. 【七夕】是时候展现专属于程序员的“浪漫”了
  13. 新一代物联网商用全面铺开 NB-IoT擎起新智慧城市
  14. TESS NG微观交通仿真软件二次开发接口如何规划
  15. VMware网络NAT模式无法连接解决方法
  16. 家居家装行业人群洞察白皮书.pdf
  17. 复旦大学教授张军平:极端情况下,人工智能的尽头就是人工
  18. 英语学习APP—百词斩
  19. Weblogic Server打补丁方法步骤
  20. kali渗透之DC-2

热门文章

  1. 删除linux后,修复windows的启动项:MBRFix工具
  2. 使用Dart/Flutter语言开发的命令行文字RPG类型小游戏
  3. 堆(heap)系列_0x05:一张图剖析堆块分配和FreeLists的联系
  4. 使用yocto搭建 i.MX8QXP Linux 4.14.98_ga 板级开发包编译环境
  5. Python selenium库的基本使用
  6. Emwin常用API函数
  7. ibm websphere_IBM WebSphere开发者技术期刊,使用Tivoli Access Manager和WebSphere Portal配置单点登录
  8. 车联网解决方案、汽车CANBUS总线开发、车联网OBD、车载终端车联网平台研发设计、
  9. UG NX 12 对象选择
  10. 面试时,不知如何和面试官谈期望薪资