使用过程中开始有点不顺,经过调试总算OK了。
现将解决内容公布如下:
1. 在修改某jar包某类的方法时,如果想直接重写方法体,注意方法体里面的各种类,要直接写类全局名称,因为编译时是可能imports会出现问题。
2. 在方法体内,引用形参,用$1,$2,$3,不能用反编译过来的变量名字。
3. for循环,编译时不支持 jdk5的for(xx:xxx)的写法,要改成常规for循环或迭代。
4. 对同名的不同方法,获取时,采用
cc = cp.get("xxx"); CtClass[] param = new CtClass[4]; param[0] = cp.get("java.lang.String"); param[1] = cp.get("java.lang.String"); param[2] = cp.get("java.lang.String"); param[3] = cp.get("int"); m = cc.getDeclaredMethod("a", param);