public
abstract
class
ClassLoader
extends Object
| java.lang.Object | |
| ↳ | java.lang.ClassLoader |
|
|
|
|
Loads classes and resources from a repository. One or more class loaders are installed at runtime. These are consulted whenever the runtime system needs a specific class that is not yet available in-memory. Typically, class loaders are grouped into a tree where child class loaders delegate all requests to parent class loaders. Only if the parent class loader cannot satisfy the request, the child class loader itself tries to handle it.
ClassLoader is an abstract class that implements the common
infrastructure required by all class loaders. Android provides several
concrete implementations of the class, with
PathClassLoader being the one typically used. Other
applications may implement subclasses of ClassLoader to provide
special ways for loading classes.
See also:
Protected constructors | |
|---|---|
ClassLoader()
Constructs a new instance of this class with the system class loader as its parent. |
|
ClassLoader(ClassLoader parentLoader)
Constructs a new instance of this class with the specified class loader as its parent. |
|
Public methods | |
|---|---|
void
|
clearAssertionStatus()
Sets the default assertion status for this class loader to |
final
ClassLoader
|
getParent()
Returns this class loader's parent. |
URL
|
getResource(String resName)
Returns the URL of the resource with the specified name. |
InputStream
|
getResourceAsStream(String resName)
Returns a stream for the resource with the specified name. |
Enumeration<URL>
|
getResources(String resName)
Returns an enumeration of URLs for the resource with the specified name. |
static
ClassLoader
|
getSystemClassLoader()
Returns the system class loader. |
static
URL
|
getSystemResource(String resName)
Finds the URL of the resource with the specified name. |
static
InputStream
|
getSystemResourceAsStream(String resName)
Returns a stream for the resource with the specified name. |
static
Enumeration<URL>
|
getSystemResources(String resName)
Returns an enumeration of URLs for the resource with the specified name. |
Class<?>
|
loadClass(String className)
Loads the class with the specified name. |
void
|
setClassAssertionStatus(String cname, boolean enable)
Sets the assertion status of the class with the specified name. |
void
|
setDefaultAssertionStatus(boolean enable)
Sets the default assertion status for this class loader. |
void
|
setPackageAssertionStatus(String pname, boolean enable)
Sets the assertion status of the package with the specified name. |
Protected methods | |
|---|---|
final
Class<?>
|
defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
Defines a new class with the specified name, byte code from the byte buffer and the optional protection domain. |
final
Class<?>
|
defineClass(String className, byte[] classRep, int offset, int length, ProtectionDomain protectionDomain)
Constructs a new class from an array of bytes containing a class definition in class file format and assigns the specified protection domain to the new class. |
final
Class<?>
|
defineClass(String className, byte[] classRep, int offset, int length)
Constructs a new class from an array of bytes containing a class definition in class file format. |
final
Class<?>
|
defineClass(byte[] classRep, int offset, int length)
This method was deprecated
in API level 1.
Use |
Package
|
definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
Defines and returns a new |
Class<?>
|
findClass(String className)
Overridden by subclasses, throws a |
String
|
findLibrary(String libName)
Returns the absolute path of the native library with the specified name,
or |
final
Class<?>
|
findLoadedClass(String className)
Returns the class with the specified name if it has already been loaded
by the VM or |
URL
|
findResource(String resName)
Finds the URL of the resource with the specified name. |
Enumeration<URL>
|
findResources(String resName)
Finds an enumeration of URLs for the resource with the specified name. |
final
Class<?>
|
findSystemClass(String className)
Finds the class with the specified name, loading it using the system class loader if necessary. |
Package
|
getPackage(String name)
Returns the package with the specified name. |
Package[]
|
getPackages()
Returns all the packages known to this class loader. |
Class<?>
|
loadClass(String className, boolean resolve)
Loads the class with the specified name, optionally linking it after loading. |
final
void
|
resolveClass(Class<?> clazz)
Forces a class to be linked (initialized). |
final
void
|
setSigners(Class<?> c, Object[] signers)
Sets the signers of the specified class. |
Inherited methods | |
|---|---|
java.lang.Object
| |
ClassLoader ()
Constructs a new instance of this class with the system class loader as its parent.
ClassLoader (ClassLoader parentLoader)
Constructs a new instance of this class with the specified class loader as its parent.
| Parameters | |
|---|---|
parentLoader |
ClassLoader:
The ClassLoader to use as the new class loader's
parent.
|
void clearAssertionStatus ()
Sets the default assertion status for this class loader to false
and removes any package default and class assertion status settings.
Note: This method does nothing in the Android reference implementation.
ClassLoader getParent ()
Returns this class loader's parent.
| Returns | |
|---|---|
ClassLoader |
this class loader's parent or null.
|
URL getResource (String resName)
Returns the URL of the resource with the specified name. This
implementation first tries to use the parent class loader to find the
resource; if this fails then findResource(String) is called to
find the requested resource.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
URL |
the URL object for the requested resource or null
if the resource can not be found |
See also:
InputStream getResourceAsStream (String resName)
Returns a stream for the resource with the specified name. See
getResource(String) for a description of the lookup algorithm
used to find the resource.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
InputStream |
a stream for the resource or null if the resource can not be found |
See also:
Enumeration<URL> getResources (String resName)
Returns an enumeration of URLs for the resource with the specified name.
This implementation first uses this class loader's parent to find the
resource, then it calls findResources(String) to get additional
URLs. The returned enumeration contains the URL objects of both
find operations.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
Enumeration<URL> |
an enumeration of URL objects for the requested resource. |
| Throws | |
|---|---|
IOException |
if an I/O error occurs. |
ClassLoader getSystemClassLoader ()
Returns the system class loader. This is the parent for new
ClassLoader instances and is typically the class loader used to
start the application.
| Returns | |
|---|---|
ClassLoader |
|
URL getSystemResource (String resName)
Finds the URL of the resource with the specified name. The system class loader's resource lookup algorithm is used to find the resource.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
URL |
the URL object for the requested resource or null
if the resource can not be found. |
See also:
InputStream getSystemResourceAsStream (String resName)
Returns a stream for the resource with the specified name. The system class loader's resource lookup algorithm is used to find the resource. Basically, the contents of the java.class.path are searched in order, looking for a path which matches the specified resource.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
InputStream |
a stream for the resource or null. |
See also:
Enumeration<URL> getSystemResources (String resName)
Returns an enumeration of URLs for the resource with the specified name. The system class loader's resource lookup algorithm is used to find the resource.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
Enumeration<URL> |
an enumeration of URL objects containing the requested
resources. |
| Throws | |
|---|---|
IOException |
if an I/O error occurs. |
Class<?> loadClass (String className)
Loads the class with the specified name. Invoking this method is
equivalent to calling loadClass(className, false).
Note: In the Android reference implementation, the
second parameter of loadClass(String, boolean) is ignored
anyway.
| Parameters | |
|---|---|
className |
String:
the name of the class to look for. |
| Returns | |
|---|---|
Class<?> |
the Class object. |
| Throws | |
|---|---|
ClassNotFoundException |
if the class can not be found. |
void setClassAssertionStatus (String cname, boolean enable)
Sets the assertion status of the class with the specified name.
Note: This method does nothing in the Android reference implementation.
| Parameters | |
|---|---|
cname |
String:
the name of the class for which to set the assertion status. |
enable |
boolean:
the new assertion status.
|
void setDefaultAssertionStatus (boolean enable)
Sets the default assertion status for this class loader.
Note: This method does nothing in the Android reference implementation.
| Parameters | |
|---|---|
enable |
boolean:
the new assertion status.
|
void setPackageAssertionStatus (String pname, boolean enable)
Sets the assertion status of the package with the specified name.
Note: This method does nothing in the Android reference implementation.
| Parameters | |
|---|---|
pname |
String:
the name of the package for which to set the assertion status. |
enable |
boolean:
the new assertion status.
|
Class<?> defineClass (String name, ByteBuffer b, ProtectionDomain protectionDomain)
Defines a new class with the specified name, byte code from the byte
buffer and the optional protection domain. If the provided protection
domain is null then a default protection domain is assigned to
the class.
| Parameters | |
|---|---|
name |
String:
the expected name of the new class, may be null if not
known. |
b |
ByteBuffer:
the byte buffer containing the byte code of the new class. |
protectionDomain |
ProtectionDomain:
the protection domain to assign to the loaded class, may be
null. |
| Returns | |
|---|---|
Class<?> |
the Class object created from the data in b. |
| Throws | |
|---|---|
ClassFormatError |
if b does not contain a valid class. |
NoClassDefFoundError |
if className is not equal to the name of the class
contained in b.
|
Class<?> defineClass (String className, byte[] classRep, int offset, int length, ProtectionDomain protectionDomain)
Constructs a new class from an array of bytes containing a class
definition in class file format and assigns the specified protection
domain to the new class. If the provided protection domain is
null then a default protection domain is assigned to the class.
| Parameters | |
|---|---|
className |
String:
the expected name of the new class, may be null if not
known. |
classRep |
byte:
the memory image of a class file. |
offset |
int:
the offset into classRep. |
length |
int:
the length of the class file. |
protectionDomain |
ProtectionDomain:
the protection domain to assign to the loaded class, may be
null. |
| Returns | |
|---|---|
Class<?> |
the Class object created from the specified subset of
data in classRep. |
| Throws | |
|---|---|
ClassFormatError |
if classRep does not contain a valid class. |
IndexOutOfBoundsException |
if offset < 0, length < 0 or if
offset + length is greater than the length of
classRep. |
NoClassDefFoundError |
if className is not equal to the name of the class
contained in classRep.
|
Class<?> defineClass (String className, byte[] classRep, int offset, int length)
Constructs a new class from an array of bytes containing a class definition in class file format.
| Parameters | |
|---|---|
className |
String:
the expected name of the new class, may be null if not
known. |
classRep |
byte:
the memory image of a class file. |
offset |
int:
the offset into classRep. |
length |
int:
the length of the class file. |
| Returns | |
|---|---|
Class<?> |
the Class object created from the specified subset of
data in classRep. |
| Throws | |
|---|---|
ClassFormatError |
if classRep does not contain a valid class. |
IndexOutOfBoundsException |
if offset < 0, length < 0 or if
offset + length is greater than the length of
classRep.
|
Class<?> defineClass (byte[] classRep, int offset, int length)
This method was deprecated
in API level 1.
Use defineClass(String, byte[], int, int)
Constructs a new class from an array of bytes containing a class definition in class file format.
| Parameters | |
|---|---|
classRep |
byte:
the memory image of a class file. |
offset |
int:
the offset into classRep. |
length |
int:
the length of the class file. |
| Returns | |
|---|---|
Class<?> |
the Class object created from the specified subset of
data in classRep. |
| Throws | |
|---|---|
ClassFormatError |
if classRep does not contain a valid class. |
IndexOutOfBoundsException |
if offset < 0, length < 0 or if
offset + length is greater than the length of
classRep. |
Package definePackage (String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
Defines and returns a new Package using the specified
information. If sealBase is null, the package is left
unsealed. Otherwise, the package is sealed using this URL.
| Parameters | |
|---|---|
name |
String:
the name of the package. |
specTitle |
String:
the title of the specification. |
specVersion |
String:
the version of the specification. |
specVendor |
String:
the vendor of the specification. |
implTitle |
String:
the implementation title. |
implVersion |
String:
the implementation version. |
implVendor |
String:
the specification vendor. |
sealBase |
URL:
the URL used to seal this package or null to leave the
package unsealed. |
| Returns | |
|---|---|
Package |
the Package object that has been created. |
| Throws | |
|---|---|
IllegalArgumentException |
if a package with the specified name already exists. |
Class<?> findClass (String className)
Overridden by subclasses, throws a ClassNotFoundException by
default. This method is called by loadClass after the parent
ClassLoader has failed to find a loaded class of the same name.
| Parameters | |
|---|---|
className |
String:
the name of the class to look for. |
| Returns | |
|---|---|
Class<?> |
the Class object that is found. |
| Throws | |
|---|---|
ClassNotFoundException |
if the class cannot be found. |
String findLibrary (String libName)
Returns the absolute path of the native library with the specified name,
or null. If this method returns null then the virtual
machine searches the directories specified by the system property
"java.library.path".
This implementation always returns null.
| Parameters | |
|---|---|
libName |
String:
the name of the library to find. |
| Returns | |
|---|---|
String |
the absolute path of the library. |
Class<?> findLoadedClass (String className)
Returns the class with the specified name if it has already been loaded
by the VM or null if it has not yet been loaded.
| Parameters | |
|---|---|
className |
String:
the name of the class to look for. |
| Returns | |
|---|---|
Class<?> |
the Class object or null if the requested class
has not been loaded.
|
URL findResource (String resName)
Finds the URL of the resource with the specified name. This
implementation just returns null; it should be overridden in
subclasses.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
URL |
the URL object for the requested resource.
|
Enumeration<URL> findResources (String resName)
Finds an enumeration of URLs for the resource with the specified name.
This implementation just returns an empty Enumeration; it should
be overridden in subclasses.
| Parameters | |
|---|---|
resName |
String:
the name of the resource to find. |
| Returns | |
|---|---|
Enumeration<URL> |
an enumeration of URL objects for the requested resource. |
| Throws | |
|---|---|
IOException |
if an I/O error occurs. |
Class<?> findSystemClass (String className)
Finds the class with the specified name, loading it using the system class loader if necessary.
| Parameters | |
|---|---|
className |
String:
the name of the class to look for. |
| Returns | |
|---|---|
Class<?> |
the Class object with the requested className. |
| Throws | |
|---|---|
ClassNotFoundException |
if the class can not be found. |
Package getPackage (String name)
Returns the package with the specified name. Package information is searched in this class loader.
| Parameters | |
|---|---|
name |
String:
the name of the package to find. |
| Returns | |
|---|---|
Package |
the package with the requested name; null if the package
can not be found.
|
Package[] getPackages ()
Returns all the packages known to this class loader.
| Returns | |
|---|---|
Package[] |
an array with all packages known to this class loader. |
Class<?> loadClass (String className, boolean resolve)
Loads the class with the specified name, optionally linking it after loading. The following steps are performed:
findLoadedClass(String) to determine if the requested
class has already been loaded.findClass(String) to find the class.
Note: In the Android reference implementation, the
resolve parameter is ignored; classes are never linked.
| Parameters | |
|---|---|
className |
String:
the name of the class to look for. |
resolve |
boolean:
Indicates if the class should be resolved after loading. This
parameter is ignored on the Android reference implementation;
classes are not resolved. |
| Returns | |
|---|---|
Class<?> |
the Class object. |
| Throws | |
|---|---|
ClassNotFoundException |
if the class can not be found. |
void resolveClass (Class<?> clazz)
Forces a class to be linked (initialized). If the class has already been linked this operation has no effect.
Note: In the Android reference implementation, this method has no effect.
| Parameters | |
|---|---|
clazz |
Class:
the class to link.
|
void setSigners (Class<?> c, Object[] signers)
Sets the signers of the specified class. This implementation does nothing.
| Parameters | |
|---|---|
c |
Class:
the Class object for which to set the signers. |
signers |
Object:
the signers for c.
|