JAVA查看动态代理类

阅读: 评论:0

JAVA查看动态代理类

JAVA查看动态代理类

JAVA查看代理类

1. 代理类 class 生成

  • System.setProperty
	// jdk8及之前的设置System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");// Properties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");// jdk8之后的设置System.setProperty("jdk.proxy.ProxyGenerator.saveGeneratedFiles", "true");// Properties().put("jdk.proxy.ProxyGenerator.saveGeneratedFiles", "true");
  • IDEA VM options
// jdk8及之前的设置
-Djdk.proxy.ProxyGenerator.saveGeneratedFiles=true// jdk8之后的设置
-Djdk.proxy.ProxyGenerator.saveGeneratedFiles=true

属性名的确定 可以查看 ProxyGenerator 类的 saveGeneratedFiles 属性

private static final boolean saveGeneratedFiles = (Boolean)AccessController.doPrivileged(new GetBooleanAction("sun.misc.ProxyGenerator.saveGeneratedFiles"));private static final boolean saveGeneratedFiles = (Boolean)AccessController.doPrivileged(new GetBooleanAction("jdk.proxy.ProxyGenerator.saveGeneratedFiles"));

项目启动后在工程根目录的 com.sun.proxy 包路径下, 创建了动态代理生成的.class文件

$Proxy0.class
$Proxy1.class
$Proxy2.class
...

2. 找到 class 文件

这么多Proxy哪个是我想要的?

  • 调用 debug
    查看代理类的类型和地址
    allocationClient{$Proxy211@18899}

    Proxy211 是我想要的

  • 打印获取
    获取代理类名称


package ProxyClass(ClassLoader(), AllocationClient.class).getName()
// 结果
com.sun.proxy.$Proxy211
  • 条件 debug
package sun.ateProxyClass// 条件断点
var1[0].getSimpleName().contains("AllocationClient")// 看 var2 path

3. 编译与反编译

  • javac

    • . java文件编译为 * .class文件(字节码文件)
  • javap
    字节码文件到汇编语言

javac -g xx.java
javap -v xx.class

4. jd-gui 反编译为 java 文件

下载jd-gui 的jar包,然后执行

java -jar jd-gui-1.6.6.jar

打开需要反编译的 class 文件就可以查看了!

5. reference

  • /

本文发布于:2024-02-08 19:54:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170739343468547.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动态   JAVA
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23