2013-06-12 52 views
0

好吧,那麼。我正在嘗試在ASM 4.0的ClassNode中重命名方法。ASM 4.0,ClassNode中的重命名方法

這是我的重命名類:

public class RenameVisitor extends ClassVisitor { 
private String newName,oldName; 


public RenameVisitor(String newName,String oldName){ 
    super(Opcodes.ASM4); 
    this.newName = newName; 
    this.oldName = oldName; 
} 
@Override 
public MethodVisitor visitMethod(int access, String name, 
           String desc, String signature, String[] exceptions) { 
    if(name.contains(oldName)){ 
     System.out.println(newName); 
     return cv.visitMethod(access,newName,desc,signature,exceptions); 
    } 
    return cv.visitMethod(access, name, desc, signature, exceptions); 
    } 
} 

現在,我怎麼會用這個來命名的classnode的方法呢? 我嘗試了一些事情,如:

ClassVisitor rv = new RenameVisitor(mn.name,"_"+mn.name);//mn is the method node being tested 
ClassReader cr = new ClassReader(node.name); 
cr.accept(rv,0); 

它總是拋出該類無法找到一個錯誤。我需要做什麼以便它可以讀取ClassNode ..?

回答

0

ClassReader JavaDoc將是一個很好的開始。你沒有提供任何你的字節碼來自哪裏的細節,但是如果你想使用類名的ClassReader構造函數,類應該存在於類路徑中(因此'class can not be found'錯誤)。