javassist 修改CLASS 给变量赋值报错

老程序 找不到源代码 需要修改 CLASS 通过javassist 给原有CLASS中已经定义的变量 i 赋值
代码如下:

img


报错 如下:NO such field :i

img

如果重新声明一个新的变量 可以执行 网上搜了一下 没有结果
感觉是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();
        }
    }
}