There is a class com.mycompany.MyBadClass
in my Java classpath.
I'm trying to instrument the JVM with a javaagent
to swap MyBadClass
for MyGoodClass
, which is also in the classpath.
public static class BugFixAgent {
public static void premain(String args, Instrumentation inst) {
inst.addClassFileTransformer(new ClassFileTransformer() {
@Override
public byte[] transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer) {
if (className.equals("com/mycompany/MyBadClass")) {
return patchedClassAsByteArray; // <====== ??????
} else {
return null; // skips instrumentation for other classes
}
}
});
}
}
So my question is: How do I load a byte array
of com.mycompany.MyGoodClass
from the classpath programmatically?