我创建了以下代理,它应该使用 ByteBuddy 示例LogInterceptor
(仅打印被调用方法的名称)重新定义每个类并转换每个方法:
public static void main(String[] args) {
ByteBuddyAgent.installOnOpenJDK();
new AgentBuilder.Default()
.rebase(ElementMatchers.any())
.transform((builder, typeDescription) -> builder
.method(ElementMatchers.any())
.intercept(
MethodDelegation
.to(LogInterceptor.class)
.andThen(SuperMethodCall.INSTANCE)
)
)
.installOnByteBuddyAgent();
完成此操作后,我继续调用我的代码,例如:
new JFXPanel()
...初始化 JavaFX。但是,我没有看到我的拦截器在 JavaFX 中打印任何方法。但更糟糕的是,我也没有看到 ByteBuddy 在我的一些类上打印任何方法,尽管它在其中一些类中是完全随机的(或者看起来如此)。
我的代理不应该为每个类捕获每个方法吗?这显然不是我想要做的,而是作为一种调试方式,为什么我感兴趣的方法没有被检测。