Class ClassLoaders
- java.lang.Object
-
- org.codehaus.commons.compiler.lang.ClassLoaders
-
public final class ClassLoaders extends java.lang.Object
Utility methods around theClassLoader
.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.ClassLoader
BOOTCLASSPATH_CLASS_LOADER
TheClassLoader
that loads the classes on the currently executing JVM's "boot class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, but not the JARs and class directories specified through the--classpath
command line option.static java.lang.ClassLoader
CLASSPATH_CLASS_LOADER
TheClassLoader
that loads the classes on the currently executing JVM's "class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, and the JARs and class directories specified through the class path.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.ClassLoader
getsResourceAsStream(ResourceFinder finder, java.lang.ClassLoader parent)
Creates and returns aClassLoader
that implementsClassLoader.getResourceAsStream(String)
via aResourceFinder
.static java.util.Map<java.lang.String,java.net.URL>
getSubresources(java.lang.ClassLoader classLoader, java.lang.String name, boolean includeDirectories, boolean recurse)
Returns a name-to-URL mapping of all resources "under" a given directory name.static java.util.Map<java.lang.String,java.net.URL>
getSubresourcesOf(java.net.URL root, java.lang.String rootName, boolean includeDirectories, boolean recurse)
Returns a name-to-URL mapping of all resources "under" a given root resource.
-
-
-
Field Detail
-
CLASSPATH_CLASS_LOADER
public static final java.lang.ClassLoader CLASSPATH_CLASS_LOADER
TheClassLoader
that loads the classes on the currently executing JVM's "class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, and the JARs and class directories specified through the class path.
-
BOOTCLASSPATH_CLASS_LOADER
public static final java.lang.ClassLoader BOOTCLASSPATH_CLASS_LOADER
TheClassLoader
that loads the classes on the currently executing JVM's "boot class path", i.e. the JARs in the JRE's "lib" and "lib/ext" directories, but not the JARs and class directories specified through the--classpath
command line option.
-
-
Method Detail
-
getsResourceAsStream
public static java.lang.ClassLoader getsResourceAsStream(ResourceFinder finder, @Nullable java.lang.ClassLoader parent)
Creates and returns aClassLoader
that implementsClassLoader.getResourceAsStream(String)
via aResourceFinder
.ClassLoader.getResource(String)
returns a non-null
value iff then resoure finder finds aLocatableResource
.Notice that
ClassLoader.getResources(String)
is not overridden.
-
getSubresources
public static java.util.Map<java.lang.String,java.net.URL> getSubresources(@Nullable java.lang.ClassLoader classLoader, java.lang.String name, boolean includeDirectories, boolean recurse) throws java.io.IOException
Returns a name-to-URL mapping of all resources "under" a given directory name.Iff the name does not end with a slash, then calling this method is equivalent with calling
ClassLoader.getResource(String)
.Otherwise, if the name does end with a slash, then this method returns a name-to-URL mapping of all content resources who's names begin with the given name. Iff recurse is
false
, then only immediate subresources are included. Iff includeDirectories istrue
, then also directory resources are included in the result set; their names all ending with a slash.If multiple resources have the name, then the resources are retrieved from the first occurrence.
- Parameters:
classLoader
- The class loader to use;null
means use the system class loadername
- No leading slash- Returns:
- Keys ending with a slash map to "directory resources", the other keys map to "content resources"
- Throws:
java.io.IOException
-
getSubresourcesOf
public static java.util.Map<java.lang.String,java.net.URL> getSubresourcesOf(java.net.URL root, java.lang.String rootName, boolean includeDirectories, boolean recurse) throws java.io.IOException
Returns a name-to-URL mapping of all resources "under" a given root resource.If the root designates a "content resource" (as opposed to a "directory resource"), then the method returns
Collections.singletonMap(name, rootName)
.Otherwise, if the root designates a "directory resource", then this method returns a name-to-URL mapping of all content resources that are located "under" the root resource. Iff recurse is
false
, then only immediate subresources are included. Iff includeDirectories istrue
, then directory resources are also included in the result set; their names all ending with a slash.- Returns:
- Keys ending with a slash map to "directory resources", the other keys map to "content resources"
- Throws:
java.io.IOException
-
-