不能用ByteBuddy重新定义“ java.io.ObjectInputStream”?

时间:2019-07-18 09:22:22

标签: byte-buddy

无法使用ByteBuddy重新定义java.io.ObjectInputStream。

我尝试了多种方法来解决此问题。但是我找不到钩住“ java.io.ObjectInputStream $ resolveClass”的方法。您能帮我吗?

new AgentBuilder.Default()
//                .ignore(none())
                .type(named("java.io.ObjectInputStream"))
                .transform((builder, typeDescription, classLoader,module) ->
                        builder.method(named("resolveClass"))
                                .intercept(MethodDelegation.to(TimerAdvice.class)))
                .with(AgentBuilder.Listener.StreamWriting.toSystemOut())
                .with(AgentBuilder.RedefinitionStrategy.REDEFINITION)
                .with(AgentBuilder.TypeStrategy.Default.REDEFINE)
                .installOn(inst);

1 个答案:

答案 0 :(得分:0)

您的MethodDelegation将在TimerAdvice中调用适当的方法。为此,需要在引导类加载器上加载该类。您的情况就是这种情况吗?

或者,研究使用Advice装饰一种方法。