Re: Compilation Time | More questions ClassLoader

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>>>>> "Martin" == Martin Schlienger <m.schlienger@xxxxxxxxx> writes:

Martin> - Is there any place where I can find something like a UML sequence
Martin> diagram of classloading mechanisms.

Nope, sorry.

Martin> It seems there is a lot of back and forth between
Martin> URLClassLoader, ClassLoader, VMClassLoader and all is a little
Martin> bit confusing.

Most of this is delegation.  ClassLoaders are arranged in a dynamic
hierarchy and each delegates loading to its parent before trying to
load itself.  This chain is rooted in VMClassLoader, which is not a
standard class but rather the way we've chosen to represent the
bootstrap loader inn Classpath .

Martin> - Any suggestion to make a class loaded by another loader to have the
Martin> same rights as the ones loaded with the bootstrap (
Martin> VMClassLoader.loadClass() ). Since we are loading some of the classes
Martin> from glibj.zip with another loader that can access a remote file, but
Martin> ATM we have some IllegalAccessException with some of these. Since we
Martin> use the default ClassLoader's defineClass(), we may have to hack this
Martin> one (no success ATM).

The VM* classes in Classpath are a bit funny.  They define an API but
they don't use inheritance for implementations -- instead a given VM
can replace one of the classes entirely and it is simply expected to
conform to the defined API.

So, you can change VMClassLoader to do whatever you like.  For
instance, in libgcj we delegate some operations to a URLClassLoader
that we construct after VM startup.

I'm not really sure what you mean about IllegalAccessException and the
default defineClass.  As I recall, ultimately all classes are defined
via a method on VMClassLoader.

Tom


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux