ClassFileTransformer被ClassLoader调用。从你链接的文章,变压器的稍加修饰,看起来像这样:
public byte[] transform(ClassLoader loader, String className,
Class redefiningClass, ProtectionDomain domain, byte[] bytes)
throws IllegalClassFormatException {
new RuntimeException("Transformer to Transform Class: " + className)
.printStackTrace(System.out);
return bytes;
}
产生这样的输出:
java.lang.RuntimeException: Transformer to Transform Class: MyMain
at com.javalobby.tnt.instrument.SimpleTransformer.transform(SimpleTransformer.java:14)
at sun.instrument.TransformerManager.transform(Unknown Source)
at sun.instrument.InstrumentationImpl.transform(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
很好,谢谢。非常聪明的方式来找出,顺便说一句:)。感谢您的尝试! – Alix 2010-06-18 16:02:34