我试图使用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");
}
}
Run Code Online (Sandbox Code Playgroud)
然后,使用文件"javassist.jar"运行代码:
javac -cp javassist.jar cRepair.java
Run Code Online (Sandbox Code Playgroud)
然后检查目标类:
javap -verbose RemoveMethod.class
Run Code Online (Sandbox Code Playgroud)
方法"DoubleCheck"仍在那里!
这看起来很奇怪.为什么会发生这种情况以及如何解决?