Since 1.2, Java has used a delegation model for Classloaders, ie children defer to parents all the way up the chain and if none of the other loaders find the requested class, then the child attempts to load it with its CLASSPATH. Take a look at this article. This has caused us quite a bit of grief at work since on Websphere 5.0, we are dealing with at least six ClassLoaders. Problems arise when a parent knows of one class that has reference to classes that are only known by children.
That's pretty much it. Which methods did you override in your ClassLoader? Take a look at the source code for ClassLoader in the src.zip that comes with the SDK, it should be in the root of the installation directory. Here is the pertinent loadClass method: