前置工作
1. 复制 JDK 安装目录\jre\bin\sawindbg.dll 到 JDK 安装目录同级的 jre\bin 目录下,否则会报错找不到 sawindbg.dll 文件。
比如我的 sawindbg.dll 文件在 D:\Program Files\Java\jdk1.8.0_301\jre\bin 目录下,需要复制到 D:\Program Files\Java\jre1.8.0_301\bin 目录下
 
2. 启动工程,需要注意的是,启动工程的 JVM 环境必须是安装的 JDK 环境,否则后续操作会报错 JVM 版本不一致。
比如我在 idea 中直接用 main 方法启动,此时操作就会报错,因为 idea 会使用默认的 OpenJDK 去运行这段代码。解决方法是,手动配置 JDK,或者在已经配置好的工程中运行。比如我的就是在配置好的 SpringBoot 的启动类中运行示例代码。
 
开始使用
1. 做完以上前置工作后,直接启动工程,注意不要让工程启动后短时间内就终止,因为程序终止后生成的 class 文件也会销毁,这里可以使用循环或者线程 sleep
 
2. win + r 打开 DOS 窗口,
输入命令 java -cp ".;%JAVA_HOME%/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
Enter 打开 HSDB 图形化界面
这个命令是启动 JDK /lib/sa-jdi.jar,HSDB 类是一个很强大的JVM运行时状态分析工具
 
3. 选择第一个 Attach to HotSpot process
 
4. 输入工程的进程 PID,可以打开资源管理器或 VisualVM 查看。VisualVM 在 JDK\bin 目录下,启动 jvisualvm 就可以啦
 
 
5. 选择第一个 Class Browser
 
 
6. 搜索委托类(被代理的类),比如我的是 Meal

7. 选择指定的 class 生成 .class 文件,比如CGLib 动态生成的子类是包含 $FastClassByCGLIB$ 的类

 
8. 生成 .class 文件,保存路径在 JDK\lib\包路径 目录下。

比如我的生成路径是

9. 用 idea 等反编译工具打开,idea 没装反编译插件的就自己下载吧

JDK 工具 HSDB 查看动态生成类的更多相关文章

  1. 【原】如何获取Java动态生成类?

    写作目的:Java大部分框架,如Spring,Hibernate等都会利用动态代理在程序运行的时候生成新的类, 有的时候为了学习,或者深入了解动态代理,想查看动态生成类的源代码究竟长怎么个样子, 通过 ...

  2. Java动态生成类以及动态添加属性

    有个技术实现需求:动态生成类,其中类中的属性来自参数对象中的全部属性以及来自参数对象properties文件. 那么技术实现支持:使用CGLib代理. 具体的实现步骤: 1.配置Maven文件: &l ...

  3. Roslyn 编译器Api妙用:动态生成类并实现接口

    在上一篇文章中有讲到使用反射手写IL代码动态生成类并实现接口. 反射的妙用:C#通过反射动态生成类型继承接口并实现 有位网友推荐使用 Roslyn 去脚本化动态生成,今天这篇文章就主要讲怎么使用 Ro ...

  4. java ASM动态生成类

    BeanTest2.java import java.io.FileOutputStream; import org.objectweb.asm.AnnotationVisitor; import o ...

  5. JDK工具(查看JVM参数、内存使用情况及分析等)

      在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一 ...

  6. 使用 xsd.exe 命令工具将 xsd 架构生成 类(CS) 文件

    vs自带命令行工具 命令:xsd  xml文件路径 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>xsd d:Scheme.xml ...

  7. C# 动态生成类 枚举等

    private void GenerateCode() { /*注意,先导入下面的命名空间 using System.CodeDom using System.CodeDom.Compiler; us ...

  8. java 动态生成类再编译最后代理

    package spring.vhostall.com.proxy; public interface Store { public void sell(); } ------------------ ...

  9. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

随机推荐

  1. Python turtle.right与turtle.setheading的区别

    一.概念 turtle.right与turtle.left用法一致,我们以turtle.right为例进行讲述. turtle.right(angle)向右旋转angle角度. turtle.seth ...

  2. P4884-多少个1?【BSGS】

    正题 题目链接:https://www.luogu.com.cn/problem/P4884 题目大意 求一个最小的\(n\)使得\(n\)个连续的\(1\)其在模\(m\)意义下等于\(k\). \ ...

  3. 牛客练习赛71E-神奇的迷宫【点分治,NTT】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/7745/E 题目大意 给出\(n\)个点的一棵树,每个点有一个选择权重\(a_i\)(有\(\frac{a_i ...

  4. 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!

    Android 和  ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...

  5. 学习Tomcat(六)之类加载器

    通过前面的文章我们知道,Tomcat的请求最终都会交给用户配置的servlet实例来处理.Servlet类是配置在配置文件中的,这就需要类加载器对Servlet类进行加载.Tomcat容器自定义了类加 ...

  6. torch的下载及安装

    Pytorch官网:https://pytorch.org/ 安装的时候如果选择在官网上下载安装的话下载会很慢,试过梯子也是很慢,此处提供一种快速安装的方法. 1.由于我是window系统,我选择了国 ...

  7. 从零入门 Serverless | 在线应用的 Serverless 实践

    作者 | 唐慧芬(黛忻) 阿里云产品专家 导读:毫无疑问,Serverless 能够在效率和成本上给用户带来巨大收益.那具体到落地又应该怎么做呢?本文就给大家详细解读 Serverless 的落地实践 ...

  8. maven配置下载包 解决SunCertPathBuilderException:unable to find valid certification path to requested target

    ​ 解决 『SunCertPathBuilderException:unable to find valid certification path to requested target』 问题 ★ ...

  9. 题解 [HAOI2018]反色游戏

    题目传送门 题目大意 给出一个 \(n\) 个点 \(m\) 条无向边的图,每个点都有一个 \(\in [0,1]\) 的权值,每次可以选择一条边,然后将该边相连两点权值异或上 \(1\).问有多少种 ...

  10. Windows内核开发-9-32位和64位的区别

    Windows内核开发-9-32位和64位的区别 32位的应用程序可以完美再64位的电脑上运行,而32位的内核驱动无法再64位的电脑上运行,或者64位的驱动无法在32位的应用程序上运行.这是为什么呢. ...