Sto provando a eliminare un metodo da un file di classe che utilizza Javassist.Come rimuovere un metodo usando Javassist?
classe di destinazione: "RemoveMethod"
.
metodo di destinazione: "DoubleCheck"
.
miei codici:
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");
}
}
Poi, eseguire il codice usando il file "javassist.jar":
javac -cp javassist.jar cRepair.java
quindi controllare la classe di destinazione:
javap -verbose RemoveMethod.class
Il metodo "DoubleCheck" è ancora lì!
Questo sembra davvero strano. Perché questo potrebbe accadere e come risolverlo?
la chiamata javac compila semplicemente il codice, non lo esegue. – muued
@muued, grazie amico. Ha senso! Ho cercato di eseguire il codice utilizzando: "java cRepair", ma il sistema dice "non potrebbe trovare o caricare la classe principale cRepair" – Delibz
run 'java -cp javassist.jar javassist.cRepair' – muued