推荐:https://segmentfault.com/a/1190000004976168
https://www.cnblogs.com/relucent/p/6525821.html
https://blog.csdn.net/z69183787/article/details/46762435
依赖
原 asm 已经迁移到 org.ow2.asm
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>7.1</version>
</dependency>
注意
在web工程中(如:使用tomcat容器),不能使用下面方式,会无法读取 .class 文件
String className = method.getDeclaringClass().getName();
ClassReader cr = new ClassReader(className);
因为 ClassReader 中使用的是 ClassLoader 类加载器,在 tomcat等容器中,使用的是自己实现的类加载器,导致 ClassLoader 类加载器读取不到 classes 目录下的文件
应该使用下面方式:
InputStream in = clazz.getResourceAsStream("/" + clazz.getName().replace('.', '/') + ".class")
ClassReader cr = new ClassReader(in);