获得徽章 0
- 对于指令:
INVOKEDYNAMIC makeConcatWithConstants(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/StringConcatFactory.makeConcatWithConstants(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
// arguments:
"\u0001\u0001"
]
我想用ASM的visitInvokeDynamicInsn该怎么表示?从网络上面查询的资料均和我的示例样式不同。展开评论点赞 - 在我尝试通过ASM动态注入实现AOP功能时,使用idea插件ASM Bytecode Outline,得到以下信息:
INVOKESTATIC java/lang/Thread.currentThread ()Ljava/lang/Thread;
对于此,我使用ASM来进行设置:
mv.visitMethodInsn(INVOKESTATIC, "java/lang/Thread", "currentThread", "()Ljava/lang/Thread", false);
当我运行程序时,控制台爆出错误:
java.lang.ClassFormatError: Method "currentThread" in class cn/test/AsmTest2 has illegal signature "()Ljava/lang/Thread"
所对应的程序代码为:
StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[1];
我查看对应的源码,Thread.currentThread()方法的参数为空,返回值为java.lang.Thread
请问有哪位大佬知道这个该怎么解决吗?
如果想获取详细信息,可以查看我在开源中国发布的问答:www.oschina.net
展开评论点赞