Class ClassLoaders

java.lang.Object
org.codehaus.commons.compiler.lang.ClassLoaders

public final class ClassLoaders extends Object
Utility methods around the ClassLoader.
  • Field Details

    • CLASSPATH_CLASS_LOADER

      public static final ClassLoader CLASSPATH_CLASS_LOADER
      The ClassLoader 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 ClassLoader BOOTCLASSPATH_CLASS_LOADER
      The ClassLoader 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.
    • BOOTCLASSPATH_SUBRESOURCES_OF

      private static final ClassLoaders.SubresourceGetter BOOTCLASSPATH_SUBRESOURCES_OF
  • Constructor Details

    • ClassLoaders

      private ClassLoaders()
  • Method Details

    • getsResourceAsStream

      public static ClassLoader getsResourceAsStream(ResourceFinder finder, @Nullable ClassLoader parent)
      Creates and returns a ClassLoader that implements ClassLoader.getResourceAsStream(String) via a ResourceFinder.

      ClassLoader.getResource(String) returns a non-null value iff then resoure finder finds a LocatableResource.

      Notice that ClassLoader.getResources(String) is not overridden.

    • getSubresources

      public static Map<String,URL> getSubresources(@Nullable ClassLoader classLoader, String name, boolean includeDirectories, boolean recurse) throws 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 is true, 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 loader
      name - No leading slash
      Returns:
      Keys ending with a slash map to "directory resources", the other keys map to "content resources"
      Throws:
      IOException
    • getBootclasspathSubresourcesOf

      private static Map<? extends String,? extends URL> getBootclasspathSubresourcesOf(String name, boolean includeDirectories, boolean recurse) throws IOException
      Finds subresources on the JVM's bootstrap classpath. This is kind of tricky because the .jar files on the BOOTCLASSPATH don't contain "directory entries".
      Throws:
      IOException
    • getSubresourcesOf

      public static Map<String,URL> getSubresourcesOf(URL root, String rootName, boolean includeDirectories, boolean recurse) throws 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 is true, 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:
      IOException
    • getSubresources

      private static Map<String,URL> getSubresources(URL jarFileUrl, JarFile jarFile, String namePrefix, boolean includeDirectories, boolean recurse)
    • getFileResources

      private static Map<String,URL> getFileResources(URL fileUrl, String namePrefix, boolean includeDirectories, boolean recurse)
    • fileUrl

      private static URL fileUrl(File file)