Package org.codehaus.classworlds
Class UberJarRealmClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- org.codehaus.classworlds.RealmClassLoader
-
- org.codehaus.classworlds.UberJarRealmClassLoader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class UberJarRealmClassLoader extends RealmClassLoader
Classloader forClassRealms. Loads classes from an "uberjar".- Version:
- $Id: UberJarRealmClassLoader.java 126 2006-01-12 04:17:51Z $
- Author:
- bob mcwhirter
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.MapclassIndexprivate java.util.MapjarIndexesprivate java.util.Listurls-
Fields inherited from class org.codehaus.classworlds.RealmClassLoader
realm
-
-
Constructor Summary
Constructors Constructor Description UberJarRealmClassLoader(DefaultClassRealm realm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddConstituent(java.net.URL constituent)Add a constituent to this realm for locating classes.private voidbuildIndexForJar(java.net.URL inUrl)protected byte[]findClassInDirectoryUrl(java.net.URL url, java.lang.String path)protected byte[]findClassInJarStream(java.net.URL inUrl, java.lang.String path)java.net.URLfindResource(java.lang.String name)Find a resource within this ClassLoader only (don't delegate to the parent).protected java.net.URLfindResourceInDirectoryUrl(java.net.URL inUrl, java.lang.String path)protected java.net.URLfindResourceInJarStream(java.net.URL inUrl, java.lang.String path)java.util.EnumerationfindResourcesDirect(java.lang.String name)Find resources from this ClassLoader, and don't search the realm.java.lang.ClassloadClassDirect(java.lang.String className)Load a class directly from this classloader without defering through any otherClassRealm.private byte[]readStream(java.io.InputStream in)-
Methods inherited from class org.codehaus.classworlds.RealmClassLoader
findResources, getBytesToEndOfStream, getRealm, getResource, getResourceDirect, getURLs, loadClass
-
Methods inherited from class java.net.URLClassLoader
addURL, close, definePackage, findClass, getPermissions, getResourceAsStream, newInstance, newInstance
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Constructor Detail
-
UberJarRealmClassLoader
public UberJarRealmClassLoader(DefaultClassRealm realm)
-
-
Method Detail
-
addConstituent
public void addConstituent(java.net.URL constituent)
Description copied from class:RealmClassLoaderAdd a constituent to this realm for locating classes. If the url definition ends in .class its a BytesURLStreamHandler so use defineClass insead. addURL is still called for byte[] even though it has no affect and we use defineClass instead, this is for consistentency and to allow access to the class with getURLs()- Overrides:
addConstituentin classRealmClassLoader- Parameters:
constituent- URL to contituent jar or directory.
-
buildIndexForJar
private void buildIndexForJar(java.net.URL inUrl)
-
loadClassDirect
public java.lang.Class loadClassDirect(java.lang.String className) throws java.lang.ClassNotFoundExceptionLoad a class directly from this classloader without defering through any otherClassRealm.- Overrides:
loadClassDirectin classRealmClassLoader- Parameters:
className- The name of the class to load.- Returns:
- The loaded class.
- Throws:
java.lang.ClassNotFoundException- If the class could not be found.
-
findResource
public java.net.URL findResource(java.lang.String name)
Description copied from class:RealmClassLoaderFind a resource within this ClassLoader only (don't delegate to the parent).- Overrides:
findResourcein classRealmClassLoader- Returns:
- The resource.
-
findResourcesDirect
public java.util.Enumeration findResourcesDirect(java.lang.String name)
Description copied from class:RealmClassLoaderFind resources from this ClassLoader, and don't search the realm. Otherwise we'd recurse indefinitely.- Overrides:
findResourcesDirectin classRealmClassLoader- Returns:
- The resource.
-
findResourceInJarStream
protected java.net.URL findResourceInJarStream(java.net.URL inUrl, java.lang.String path)
-
findResourceInDirectoryUrl
protected java.net.URL findResourceInDirectoryUrl(java.net.URL inUrl, java.lang.String path)
-
findClassInJarStream
protected byte[] findClassInJarStream(java.net.URL inUrl, java.lang.String path)
-
findClassInDirectoryUrl
protected byte[] findClassInDirectoryUrl(java.net.URL url, java.lang.String path)
-
readStream
private byte[] readStream(java.io.InputStream in) throws java.io.IOException- Throws:
java.io.IOException
-
-