Hi All,

There is problem with javassit and ClassLoaders for wich there is a solution, 
but involves changing javassit.ClassClassPath a little bit. 

= Here goes the problem: =

I am using a special classloader to load an application wich I cannot change.
This application uses javassit, so javassit ends up been loaded by my 
classloader.
Usually this application runs without my classloader.

Eventualy ClassPool.createCtClass("ClassX",..) is called and, later 
ClassClassPath.find. At this point javassit.NotFoundException occurs. See the 
error at the end of this post.


= Here the scenario: =

java.lang.Object is loaded by the System ClassLoader
javassit.ClassClassPath  is loaded by my ClassLoader
ClassX  is loaded by my ClassLoader

But ClassClassPath asks to java.lang.Object where is the bytecode for "ClassX".


= Here a comment from javassit.ClassClassPath constructor: =

anonymous wrote : 
  |  /* The value of thisClass was this.getClass() in early versions:
  |   *
  |   *     thisClass = this.getClass();
  |   *
  |   * However, this made openClassfile() not search all the system
  |   * class paths if javassist.jar is put in jre/lib/ext/
  |   * (with JDK1.4).
  |   */
  |   this(java.lang.Object.class);
  | 
Fine, but this created a new bug which is cited in other posts such as:
  "Javassist and Tomcat 4.1" 
http://jboss.com/index.html?module=bb&op=viewtopic&p=3902342
 "javassist.NotFoundException?: org.neo.swarmdesk.components.S" 
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=33476
 "Re: Problems using custom ClassLoader" 
http://www.opensubscriber.com/message/[email protected]/514059.html


= Here a possible solution: =

Assign thisClass=this.getClass() at the default constructor. 
Change the implementation of ClassClassPath.openClassfile and
ClassClassPath.find to look for the bytecodes also at 
java.lang.Object.class.getResource() if the default 
constructor was called

i.e: if the resource was not found and thisClass==this.getClass() then search 
for the resource with java.lang.Object.class.getResource()

Regards and thanks in advance,

Daniel Sperry

----

Caused by: javassist.NotFoundException: 
com.hoplon.bitverse.handlers.HandlerCaller
        at javassist.ClassPool.get(ClassPool.java:389)
        at 
com.hoplon.bitverse.handlers.BytecodeHandler.createHandlerCaller(BytecodeHandler.java:117)
        ... 12 more


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3969053#3969053

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3969053
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to