You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by Matthijs Wensveen <mr...@wanadoo.nl> on 2005/01/21 16:04:23 UTC
Re: RE : BCEL ClassLoader
Aha, now I remember. Thanks.
I wanted to supply the bcel classLoader as the system classloader like:
java -Djava.system.class.loader=org.apache.bcel.util.ClassLoader MyClass
This doesn't work because the empty constructor of org..ClassLoader
instatiates a default member deferTo:
private java.lang.ClassLoader deferTo = ClassLoader.getSystemClassLoader();
getSystemClassLoader will try to construct org..ClassLoader (because we
supplied java.system.class.loader) which will try to instatiate deferTo
which... etc, etc.
The trouble is that you can't prevent this behaviour. You could call a
constructor with a deferTo as a parameter (getParent() would be a good
choice), but it's too late, the loop will loop.
The good thing is.... it's Open Source ;)
If deferTo would be left uninstantiated and they'd made sure every
constructor would set deferTo to something logical:
*first* try getParent() if that returns null (which JVM implementation
MAY do according to the specs)
*then* try getSystemClassLoader (which may result in an
IllegalStateException that can be caught).
If everything fails you can't defer, and ignored package names would be
meaningless and they also have to be loaded by the ClassParser which is
tricky. Luckily both the Sun JVM and IBM JVM return a default
ClassLoader when getParent() is called.
I'll post this message to the bcel-dev list and hopefully they'll pick
it up.
Also, I don't know of other bcel-like projects that have ClassLoader
implementations have the same problems. You can always try some out. I
think AspectWerkz uses ObjectWeb ASM which is smaller and faster but
looks a lot harder to use. And there are a few other projects out there...
Good luck, and let me know if you stumble upon things you might think I
might find interesting (which is not an invitation for spam, obviously :D)
Matthijs.
LERBSCHER Jean-Pierre wrote:
>Thanks Matthijs.
>This is your post on bcel mailing list.
>http://www.mail-archive.com/bcel-dev@jakarta.apache.org/msg00382.html
>
>
>-----Message d'origine-----
>De : Matthijs Wensveen [mailto:mrw@wanadoo.nl]
>Envoyé : vendredi 21 janvier 2005 11:31
>À : LERBSCHER Jean-Pierre
>Objet : Re: BCEL ClassLoader
>
>
>Hello Jean-Pierre,
>Can you refresh my memory? It's been a while since I posted a question
>on the mailing list and you mail doesn't include any context. I'm not
>working on classloaders anymore since AspectWerkz solved the
>problem I was working on. But I do remember solving some problems I had
>with BCEL. I believe it had something to do with the classloader needing
>to load all subsequent classes (bootstrapping classloader). If I can
>find the source code I was working on I will mail it to you.
>Unfortunately I will be gone tonight and for the weekend, so it will be
>monday at the earliest. I hope this is okay.
>
>Regards,
>Matthijs.
>
>LERBSCHER Jean-Pierre wrote:
>
>
>
>>Hi,
>>I have the same problem, do you have a solution ?
>>Thanks
>>Jean-pierre
>>
>>
---------------------------------------------------------------------
To unsubscribe, e-mail: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org