AnonymousClassLoader and ClassLoader
Charles Oliver Nutter
charles.nutter at sun.com
Thu Apr 24 07:51:54 PDT 2008
Rémi Forax wrote:
> Yesterday evening, I've tried to replace the application classloader
> (the one used to load the application) by one that use an anymous class
> loader
> to load the class. And i've tested by launching SwingSet2.
>
> And it doesn't work because UI program like SwingSet lookup their
> resources
> like image, icons etc. using getResource()/getResourceAsStream().
> getResource() makes the assumption that if getClassLoader() returns null
> the class is loaded by the bootstrap classloader.
>
> In my opinion, getResource() is not the only method that makes this
> assumption
> so an anonymous class should be able to specify an external classloader
> when defined i.e. Unsafe.defineAnonymousClass should take
> a classloader as argument.
An interesting thought. I can think of a few places I expect to be able
to call getClassLoader on a target class I've loaded at runtime, but
that's generally because I want to associate other classes dependent on
the target class (i.e. method handles for a freshly-loaded compiled Ruby
script) with the same throwaway classloader. Given the looser nature of
the anonymous classloader, that particular scenario would go away. I'd
just always grab my trust anonymous classloader and throw classes at it,
knowing they'd GC when they were no longer in use.
I don't think the anonymous classloader is going to be something you can
just start using lightly, since assumptions existing classes make about
classloading are sure to get in the way.
- Charlie
More information about the mlvm-dev
mailing list