我需要在执行X时查找正在加载的类,但是该类在启动时正在加载。根据一个教程,当我的ClassLogger函数结束但那没有发生时,我应该使用与转换后的类有关的信息来创建一个新的类文件。
我想要的是一个无休止的循环,当我在程序中执行一个动作时,即使为了进行查找而使用我要查找的类进行了转换,我也得到了一个智能的类名。
import java.lang.instrument.IllegalClassFormatException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.security.ProtectionDomain;
public class ClassLogger implements ClassFileTransformer {
@Override
public byte[] transform(ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer) throws IllegalClassFormatException {
try {
Path path = Paths.get("classes/" + className + ".class");
//System.out.println(className);
System.out.println(classfileBuffer);
//Files.write(path, classfileBuffer);
} catch (Throwable ignored) { // ignored, don’t do this at home kids
} finally { return classfileBuffer; }
}
}