我创建了一个简单的类
(1) public class Inspector implements ClassFileTransformer{
(2) public byte[] transform(ClassLoader loader,
String className, Class<?> clazz,
(3) ProtectionDomain domain, byte[] bytes)
(4) throws IllegalClassFormatException {
(5) // clazz.getName();
(6) System.out.println("in Transform");
(7) return bytes;
}
public static void premain(String agentArgument,
Instrumentation instrumentation) {
System.out.println("in premain");
instrumentation.addTransformer(new Inspector());
}
输出:在变换
中的premain \ n中
然后,如果我取消注释行号(5),我就无法在此行之后获取所有println
:
输出:在premain \ n
当我使用类Class ...
中的每个方法时都是一样的有什么想法吗?
答案 0 :(得分:0)
我认为可能是因为clazz为null。它仅用于类重新定义或重新转换。 您的transform()方法可能会抛出一个NPE,它与返回null具有相同的效果,这意味着不执行转换。