大家好,我一直在 javassist 圖書館嘗試我的雙手,似乎遇到了我無法跨越的障礙。問題是我想動(dòng)態(tài)創(chuàng)建一個(gè)配置類來擴(kuò)展球衣的 ResourceConfig 類,并且在構(gòu)造函數(shù)中我想注冊(cè)包和工廠對(duì)象以進(jìn)行注入。但每次我得到錯(cuò)誤(發(fā)布在下面)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}我想動(dòng)態(tài)創(chuàng)建的原始 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); } }); }請(qǐng)注意,在研究時(shí)我發(fā)現(xiàn) javassist 對(duì)匿名內(nèi)部類有一些限制,因此代碼已轉(zhuǎn)移到 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貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
我讓它工作。對(duì)于任何有同樣問題的人,解決方案是在我的情況下使用適當(dāng)?shù)膮?shù)正確調(diào)用方法通過 javassist 的參數(shù)我得到了工作的代碼。這是對(duì)我有用的線程 https://issues.jboss.org/browse/JASSIST-192?_sscc=t
添加回答
舉報(bào)
0/150
提交
取消