2016-07-14 7 views
0

私はjavassistで作業しています。私は1つの方法を編集する必要があります。デバッグモードではすべて正常に動作していますが、実行したときに更新されたバイトコードを取得できません。何も思いつきません。ここに私のコード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

私は良いアイデアですが、私はエージェントを含めることはできません。それは受け入れられません。 –

関連する問題