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

大家好,我一直在 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);

    }

}





达令说
浏览 100回答 1
1回答

jeck猫

我让它工作。对于任何有同样问题的人,解决方案是在我的情况下使用适当的参数正确调用方法通过 javassist 的参数我得到了工作的代码。这是对我有用的线程 https://issues.jboss.org/browse/JASSIST-192?_sscc=t
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java