我的 Java 类路径中有一个类 com.mycompany.MyBadClass
。
我正在尝试使用 javaagent
来检测 JVM,以将 MyBadClass
替换为 MyGoodClass
,后者也在类路径中。
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
}
}
});
}
}
所以我的问题是:如何以编程方式从类路径加载 com.mycompany.MyGoodClass
的字节数组
?
最佳答案
你可以通过以下方式获取InputStream
loader.getResourceAsStream(name + ".class");
然后可以将其转换为字节数组。
关于java - 如何从类路径 * 作为字节数组 * 加载 Java 类以进行字节码注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48647709/