public class RootLoader extends URLClassLoader
parentLoader (has classpath: a.jar;c.jar)
|
|
childLoader (has classpath: a.jar;b.jar;c.jar)
class C (from c.jar) extends B (from b.jar)
childLoader.find("C")
--> parentLoader does know C.class, try to load it
--> to load C.class it has to load B.class
--> parentLoader is unable to find B.class in a.jar or c.jar
--> NoClassDefFoundException!
if childLoader had tried to load the class by itself, there
would be no problem. Changing childLoader to be a RootLoader
instance will solve that problem.| Constructor and Description |
|---|
RootLoader(LoaderConfiguration lc)
constructs a new RootLoader with a @see LoaderConfiguration
object which holds the classpath
|
RootLoader(URL[] urls,
ClassLoader parent)
constructs a new RootLoader with a parent loader and an
array of URLs as classpath
|
| Modifier and Type | Method and Description |
|---|---|
void |
addURL(URL url)
adds an url to the classpath of this classloader
|
protected Class |
findClass(String name) |
URL |
getResource(String name)
returns the URL of a resource, or null if it is not found
|
protected Class |
loadClass(String name,
boolean resolve)
loads a class using the name of the class
|
close, definePackage, findResource, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstancedefineClass, defineClassclearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignerspublic RootLoader(URL[] urls, ClassLoader parent)
public RootLoader(LoaderConfiguration lc)
protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException
loadClass in class ClassLoaderClassNotFoundExceptionpublic URL getResource(String name)
getResource in class ClassLoaderpublic void addURL(URL url)
addURL in class URLClassLoaderprotected Class findClass(String name) throws ClassNotFoundException
findClass in class URLClassLoaderClassNotFoundException