我正在创建一个Java代理来捕获方法名和类名,但没有找到方法。我必须制作一个该代理的jar并插入一些示例项目中,以检查捕获的数据。
答案 0 :(得分:1)
我有一些建议,我不知道它是否对您有帮助。使用JVM支持的Instrumentation API
捕获JVM加载的类很容易。首先,创建一个实现ClassFileTransformer
接口的类,并覆盖唯一的方法transform
,方法的第二个参数是JVM加载的类的类名,名称格式为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;
}