我正在使用Javassist。 这是我的代码:
public class JavaAgent {
public static void premain(String args, Instrumentation inst) {
inst.addTransformer((ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) -> {
if(className.endsWith("javafx/stage/Stage")) {
System.out.println(1);
ClassPool classPool = ClassPool.getDefault();
System.out.println(2);
}
return null;
});
}
}
我发现有一种奇怪的情况,我的输出是:
1
为什么?
编辑:
为了确保这不是一个例外问题,我添加了捕手,就像这样:
if(className.endsWith("javafx/stage/Stage")) {
try {
System.out.println(1);
ClassPool classPool = ClassPool.getDefault();
System.out.println(2);
} catch (Exception e) {
System.out.println("EX!");
}
}
输出仍然相同。
答案 0 :(得分:0)
问题解决了。我忘了将JavaAgent的lib文件夹与JavaAgent.jar一起复制。
奇怪的是,除非我宣布
,否则没有异常信息ClassPool classPool = ClassPool.getDefault();
在premain()函数之外。