我将 ASM 与 java 代理一起使用。我有以下问题。每当我在方法调用中看到“PUFIELD”指令时,我想从我的代理库中调用一个方法。
if (opcode == PUTFIELD) {
super.visitMethodInsn(Opcodes.INVOKESTATIC, "instrumenter/Util", "debug", "()V");
Util
是我用静态debug
方法定义的一个类。它留在我的 agent.jar
java -javagent:agent.jar -jar test.Test
按我的预期工作。
但是,当我用其他一些 jar 文件测试这个代理时,我得到了以下错误。
Exception in thread "main" java.lang.NoClassDefFoundError: instrumenter/Util
我怀疑这是由于并发而发生的。由于产生此错误的程序大多是多线程的。