implements a ClassFileTransformer
package instrument;
import java.lang.instrument.ClassFileTransformer;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
public class MyClassFileTransformer implements ClassFileTransformer {
public byte[] transform(ClassLoader loader, String className,
Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
System.out.println("load class: "+className);
return classfileBuffer;
}
}
create an agent to load up the ClassFileTransformer
package instrument;
import java.lang.instrument.Instrumentation;
public class AgentMain {
public static void premain(String agenArgments, Instrumentation instrument) {
instrument.addTransformer(new MyClassFileTransformer());
}
}
create MANIFEST.MF
Manifest-Version: 1.0
Premain-Class: instrument.AgentMain
package
>java -cMvf myagent.jar META-INF instrument
>java -tf myagent.jar
META-INF/
META-INF/MANIFEST.MF
instrument/
instrument/AgentMain.class
instrument/MyClassFileTransformer.class
use
java -javaagent:myagent.jar entry_classname