为了账号安全,请及时绑定邮箱和手机立即绑定

Javassist 不调用超类中定义的方法

Javassist 不调用超类中定义的方法

达令说 2022-06-04 15:55:14
大家好,我一直在 javassist 图书馆尝试我的双手,似乎遇到了我无法跨越的障碍。问题是我想动态创建一个配置类来扩展球衣的 ResourceConfig 类,并且在构造函数中我想注册包和工厂对象以进行注入。但每次我得到错误(发布在下面)public static void main(String[] args) throws Exception {        // TODO Auto-generated method stub        ClassPool pool = ClassPool.getDefault();        CtClass superCc = null;        try {            superCc = pool.get(ResourceConfig.class.getCanonicalName());        } catch (NotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        try {            CtClass cc = pool.makeClass("org.demonking.AppConfig");            cc.setSuperclass(superCc);            System.out.println(cc.getSuperclass().getName());            CtConstructor constructor = new CtConstructor(new CtClass[0], cc);            constructor.setBody("{\n"+"packages(\"org.demonking\");"+"\n"+"register(InjectorDemo.class);"+"\n"+"}");            cc.addConstructor(constructor);        } catch (CannotCompileException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }//rest of my jersey code}我想动态创建的原始 AppConfig(工作正常)public class AppConfig extends ResourceConfig{    public AppConfig()    {        packages("org.demonking");        register(new AbstractBinder(){            @Override            protected void configure() {                bindFactory(ContextHelperFactory.class)                        .to(ContextHelper.class)                        .in(RequestScoped.class);            }         });    }请注意,在研究时我发现 javassist 对匿名内部类有一些限制,因此代码已转移到 InjectorDemo 类。public class InjectorDemo extends AbstractBinder {    @Override    protected void configure() {        // TODO Auto-generated method stub             bindFactory(ContextHelperFactory.class)                     .to(ContextHelper.class)                     .in(RequestScoped.class);    }}
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

我让它工作。对于任何有同样问题的人,解决方案是在我的情况下使用适当的参数正确调用方法通过 javassist 的参数我得到了工作的代码。这是对我有用的线程 https://issues.jboss.org/browse/JASSIST-192?_sscc=t


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信