Я пытаюсь удалить метод из файла класса с помощью Javassist.
Целевой класс:"RemoveMethod"
.
Целевой метод:"DoubleCheck"
.
Мои коды:
package javassist;
import java.io.IOException;
import java.lang.reflect.Method;
import javassist.*;
public class cRepair {
public static void main(String[] args) throws NotFoundException, IOException, CannotCompileException{
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.get("javassist.RemoveMethod");
CtMethod ctm = ctClass.getDeclaredMethod("DoubleCheck");
ctClass.removeMethod(ctm);
ctClass.writeFile("C:/Users/workspace/Javaproject1/src/javassis");
}
}
Затем запустите код, используя файл «javassist.jar»:
javac -cp javassist.jar cRepair.java
Затем проверьте целевой класс:
javap -verbose RemoveMethod.class
Метод "DoubleCheck" по-прежнему существует!
Это выглядит действительно странно. Почему это могло произойти и как это исправить?
java -cp javassist.jar javassist.cRepair
- person muued   schedule 17.05.2015