小编Del*_*ibz的帖子

如何使用Javassist删除方法?

我试图使用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"仍在那里!

这看起来很奇怪.为什么会发生这种情况以及如何解决?

java javassist

6
推荐指数
1
解决办法
1020
查看次数

标签 统计

java ×1

javassist ×1