javassist在调试模式下工作而不是在运行

时间:2016-07-14 19:37:07

标签: java javassist

我正在研究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);

1 个答案:

答案 0 :(得分:0)

我假设在调试模式下运行时,在Javassist有机会对您的类进行检测之前,您的类已加载。如果已经加载了类,您将观察原始代码。

重新定义不易受此影响的课程的另一种方法是using a Java agent用于检测代码。