Top Description Fields Constructors Methods
org.codehaus.commons.compiler.util.reflect

public Class ByteArrayClassLoader

extends ClassLoader
Class Inheritance
Imports
java.io.ByteArrayInputStream, .InputStream, java.security.AccessControlException, .ProtectionDomain, java.util.Collections, .Map, org.codehaus.commons.nullanalysis.Nullable

This ClassLoader allows for the loading of a set of Java classes provided in class file format.

Field Summary

Modifier and TypeField and Description
private final Map<String, byte[]>
private Map<String, byte[]>

Constructor Summary

AccessConstructor and Description
public
ByteArrayClassLoader(Map<String, byte[]>
String className => byte[] data, or String classFileName => byte[] data
classes
)

The given Map of classes must not be modified afterwards.

public
ByteArrayClassLoader(Map<String, byte[]>
String className => byte[] data, or String classFileName => byte[] data
classes
,
ClassLoader parent)

Method Summary

Modifier and TypeMethod and Description
protected Class<?>
public InputStream
getResourceAsStream(String
The resource name
name
)

Overrides java.lang.ClassLoader.getResourceAsStream.

Returns an input stream for reading the specified resource.
public void
setResources(Map<String, byte[]> resources)

Inherited from java.lang.ClassLoader:
clearAssertionStatusdefineClassdefineClassdefineClassdefineClassdefinePackagefindClassfindLibraryfindLoadedClassfindResourcefindResourcefindResourcesfindSystemClassgetClassLoadingLockgetDefinedPackagegetDefinedPackagesgetNamegetPackagegetPackagesgetParentgetPlatformClassLoadergetResourcegetResourcesgetSystemClassLoadergetSystemResourcegetSystemResourceAsStreamgetSystemResourcesgetUnnamedModuleisRegisteredAsParallelCapableloadClassloadClassregisterAsParallelCapableresolveClassresourcessetClassAssertionStatussetDefaultAssertionStatussetPackageAssertionStatussetSigners

Field Detail

classesback to summary
private final Map<String, byte[]> classes

Hides java.lang.ClassLoader.classes.

resourcesback to summary
private Map<String, byte[]> resources

Constructor Detail

ByteArrayClassLoaderback to summary
public ByteArrayClassLoader(Map<String, byte[]> classes)

The given Map of classes must not be modified afterwards.

Parameters
classes:Map<String, byte[]>

String className => byte[] data, or String classFileName => byte[] data

ByteArrayClassLoaderback to summary
public ByteArrayClassLoader(Map<String, byte[]> classes, ClassLoader parent)
Parameters
classes:Map<String, byte[]>

String className => byte[] data, or String classFileName => byte[] data

Method Detail

findClassback to summary
protected Class<?> findClass(String name) throws ClassNotFoundException

Overrides java.lang.ClassLoader.findClass.

Implements ClassLoader#findClass(String).

Notice that, although nowhere documented, no more than one thread at a time calls this method, because ClassLoader#loadClass(java.lang.String) is synchronized.

Parameters
name:String

Doc from java.lang.ClassLoader.findClass.

The binary name of the class

Returns:Class<?>

Doc from java.lang.ClassLoader.findClass.

The resulting Class object

Annotations
@Override
Exceptions
ClassNotFoundException:

Doc from java.lang.ClassLoader.findClass.

If the class could not be found

getResourceAsStreamback to summary
public InputStream getResourceAsStream(String name)

Overrides java.lang.ClassLoader.getResourceAsStream.

Doc from java.lang.ClassLoader.getResourceAsStream.

Returns an input stream for reading the specified resource.

The search order is described in the documentation for getResource(String).

Resources in named modules are subject to the encapsulation rules specified by Module.getResourceAsStream. Additionally, and except for the special case where the resource has a name ending with ".class", this method will only find resources in packages of named modules when the package is opened unconditionally.

Parameters
name:String

The resource name

Returns:InputStream

An input stream for reading the resource; null if the resource could not be found, the resource is in a package that is not opened unconditionally, or access to the resource is denied by the security manager.

Annotations
@Override
setResourcesback to summary
public void setResources(Map<String, byte[]> resources)