【发布时间】:2018-04-02 15:35:44
【问题描述】:
我正在使用 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!");
}
}
而且输出还是一样的。
【问题讨论】:
-
尝试捕捉/记录异常
-
您使用的是什么版本的 Java?
-
不熟悉
Instrumentation,但似乎怀疑className是否会以javafx/stage/Stage结尾 -
我的Java是:1.8.0_162
-
@Brian 正如我之前所说,我在输出中得到了“1”,所以这不是问题
标签: java javassist javaagents