2016-07-14 83 views
0

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

回答

0

我認爲在調試模式下運行時,Javassist是有機率儀器類之前,你的類加載。如果該類已經加載,您將觀察原始代碼。

重新定義您的班級的替代方法不易受此影響,您可以使用using a Java agent來檢查您的代碼。

+0

雅這是個好主意,但我不能包括任何代理。這是不可接受的。 –

相關問題