java - CtClass.toClass throws an exception with message 'null' -
java - CtClass.toClass throws an exception with message 'null' -
steps perform create dynamic class follows:
seek { classloader = class.forname("org.yaddayadda.dynamicclass" + generictype.getname().tolowercase() + uniqueid); } grab (classnotfoundexception classnotfoundexception) { } if (classloader == null) { dynamicclass = pool.get("org.yaddayadda.dynamicclass"); dynamicclass.defrost(); dynamicclass.replaceclassname("org.yaddayadda.dynamicclass","org.yaddayadda.dynamicclass"+ generictype.getname().tolowercase() + uniqueid); dynamicclass.defrost(); ctmethod readobject = dynamicclass.getdeclaredmethod("method1"); ctmethod writeobject = dynamicclass.getdeclaredmethod("method2"); stringbuffer method1= new stringbuffer(); stringbuffer method2= new stringbuffer(); generatedynamiccode.generatecode(generictype, method1, method2); writeobject.insertat(1, method1.tostring()); readobject.insertat(1, method2.tostring()); //this exception thrown classloader = dynamicclass.toclass(); } i first seek check if class exists in classpool if not proceed on creating class. defrost done fail-safe mechanism. exception comes when method toclass called dynamicclass.toclass();
the exception follows
exception message: null stack trace: sun.reflect.generatedmethodaccessor1.invoke(unknown source) sun.reflect.delegatingmethodaccessorimpl.invoke(unknown source) java.lang.reflect.method.invoke(unknown source) javassist.classpool.toclass2(classpool.java:1102) javassist.classpool.toclass(classpool.java:1083) javassist.classpool.toclass(classpool.java:1032) javassist.classpool.toclass(classpool.java:990) javassist.ctclass.toclass(ctclass.java:1125) class what reason of above exception , can done avoid ?
well have found solution, in fact workaround i.e. phone call in loop 1 time again defrosting compiled class , redoing tried when exception comes , loop runs @ 3 times on safe side
int = 0; while (classloader == null) { seek { if (classloader == null) { dynamicclass = pool.get("org.yaddayadda.dynamicclass"); dynamicclass.defrost(); seek { dynamicsurrugate = pool.get("org.yaddayadda.dynamicclass" + generictype.getname().tolowercase() + uniqueid); dynamicsurrugate.defrost(); } grab (notfoundexception notfoundexception) { } //everything same } } grab (exception exception) { classloader = null; i++; } if (i == 3) { throw new exception("if failed throw message 3rd time"); } } java javassist
Comments
Post a Comment