>>>>> "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