我想从源自另一个项目的jar中的类的方法体开始插入代码片段。 在这个当前的项目中,我使用的是javassist库,使用它我能够找到并操作我想要修改的类和方法,因为我已经将此旧项目的jar添加为当前库中的库。下面是代码,我可以这样做:如何在使用Javassist的ChMethod中使用insertBefore()加载修改?
try {
ClassPool classPool = ClassPool.getDefault();
CtClass vendaControllerCt = classPool.getCtClass("com.t2tierp.pafecf.controller.VendaController");
CtMethod[] methods = vendaControllerCt.getMethods();
for(CtMethod method : methods){
if(method.getName().equals("insereVendaCabecalhoTrocaDevolucao")){
method.insertBefore("{pVendaCabecalho.setCupomSat(java.lang.Boolean.FALSE);");
}
}
} catch (NotFoundException e) {
e.printStackTrace();
} catch (CannotCompileException e) {
e.printStackTrace();
}
在本节中,当我发现我要修改的方法,我插入新行名为insereVendaCabecalhoTrocaDevolucao
使用库方法insertBefore()
被ajusted 。但是当我执行该项目并调用我修改的方法时,调整不会被加载,并且原始方法将在未经过我调整的情况下加载。
使用InstructionPrint.print(),
我可以验证显然正在进行更改,但在调用方法时未加载。
执行该方法时我的修改被调用时缺少什么?
谢谢。