java - jvm分析器中的方法参数(类名和方法名)
问题描述
我正在创建一个 java 代理来捕获方法名称和类名,但没有得到解决方法。我必须制作一个该代理的罐子并插入一些示例项目以检查捕获的数据。
解决方案
我有一些建议,不知道对你有没有帮助Instrumentation API
。使用JVM支持的捕获JVM加载的类很简单。首先,创建一个实现ClassFileTransformer
接口的类并覆盖唯一的方法transform
,方法的第二个参数是类JVM加载的类名,name的格式如io/github/YourAgent
,所以获取类名很直接。其次,接口还给出了一个操作类字节码,你可以试试。
@Override
public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println("load class " + className);
return classfileBuffer;
}
推荐阅读
- css - 使用 AdminLTE 和 yii2FullCalendar 的布局 css 和视图 css 之间的模态冲突
- ios - 有没有办法在整个应用程序中更改 UILabel 行间距,例如使用 UIAppearance 或类似的东西
- javascript - 动态添加输入 - 更新项目数量后的总价格
- c++ - 无法从向量返回指针
- kubernetes - 无法在 Pod 中挂载本地目录
- java - 弹簧执行器“/auditevents”端点返回 404
- lua - Lua:未使用“math.random”生成的值
- python - Pandas:使用字典中元组的列标题和单元格值创建数据框
- java - Spring Cloud Gateway Filter Factory for Fire and Forget 模型
- php - 如果使用 andWhere(),Symfony 3.4 / createQueryBuilder 不起作用(ClassNotFoundException)