老程序 找不到源代码 需要修改 CLASS 通过javassist 给原有CLASS中已经定义的变量 i 赋值
代码如下:
如果重新声明一个新的变量 可以执行 网上搜了一下 没有结果
感觉是javassist 分辨不清 变量是否已声明 对CLASS里 已经声明的变量 认为是没有声明
所以报错NO such field 这种情况怎么处理啊
这个例子可以参考一下:
import javassist.*;
public class MyClassModifier {
public static void main(String[] args) {
try {
// 获取类池
ClassPool cp = ClassPool.getDefault();
// 获取要修改的类
CtClass cc = cp.get("com.example.MyClass");
// 获取要修改的变量
CtField field = cc.getDeclaredField("myField");
// 修改变量的值
field.set(null, "new value");
// 保存修改后的类
cc.writeFile();
} catch (Exception e) {
e.printStackTrace();
}
}
}