我正在研究javassist。我需要编辑一个方法。在调试模式下一切正常,但是当我运行它时,它无法获取更新的字节码。我不知道。这是我的代码
CtClass classA = classPool.get("com.ClassA");
CtMethod sayHiMethod = classA.getDeclaredMethod("sayHi");
System.out.println("Going to pront");
sayHiMethod.insertBefore("{ System.out.println(\"popload\");}");
classA.writeFile();
Class c = classLoader.loadClass("com.ClassA");
Method m = c.getDeclaredMethod("sayHi");
Object obj = m.invoke(c);
答案 0 :(得分:0)
我假设在调试模式下运行时,在Javassist有机会对您的类进行检测之前,您的类已加载。如果已经加载了类,您将观察原始代码。
重新定义不易受此影响的课程的另一种方法是using a Java agent用于检测代码。