b97y
b97y
以上问题是由于增强方法中引用了@Binding.InvokeArgs Object[] args导致的,请问有解决办法吗?
> 给出具体的复现demo。 运行com.alibaba.bytekit.asm.interceptor.AtInvokeTest2中的testcase就可以复现: 
> 给出具体的复现demo。 能帮忙解决吗,等着用,感谢
> 这个测试是有问题,默认应该是不启用的,可以看项目说明,用 mvn命令来执行。 复现demo:MicroService类中方法interfaceA调用了方法interfaceB,期望得到传入interfaceB的参数值
```java package com.example; import com.alibaba.bytekit.asm.MethodProcessor; import com.alibaba.bytekit.asm.binding.Binding; import com.alibaba.bytekit.asm.interceptor.InterceptorProcessor; import com.alibaba.bytekit.asm.interceptor.annotation.AtInvoke; import com.alibaba.bytekit.asm.interceptor.parser.DefaultInterceptorClassParser; import com.alibaba.bytekit.utils.AgentUtils; import com.alibaba.bytekit.utils.AsmUtils; import com.alibaba.bytekit.utils.Decompiler; import com.alibaba.deps.org.objectweb.asm.tree.ClassNode; import com.alibaba.deps.org.objectweb.asm.tree.MethodNode; import java.util.List; import java.util.concurrent.TimeUnit; public class InterfaceInvokeDemo...
> 统一说下有问题的原因: > > 1. 从原理上来说,获取到 invoke method 前的 args ,想要在 invoke method 之后再取出来。它实际上是保存到了一个临时变量里,也就是一个 数组里 > 2. 同时,如果想要获取 invoke method 的返回值,并且在后续获取到,那么它实际上也是保存到了一个 临时变量 里 > 3. 但目前这种方式有问题: jvm 会抛异常字节码校验失败 ,可能要在 jvm...