Class MultiClassLoader


  • public class MultiClassLoader
    extends java.lang.ClassLoader
    Class loader type that can be configured to delegate to multiple internal class loaders. The THREAD_LOADER constant is a marker that will be replaced with the context loader of the current thread.
    Author:
    Abe White
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.ClassLoader SYSTEM_LOADER
      The standard system class loader.
      static java.lang.ClassLoader THREAD_LOADER
      Marker that will be replaced with the context loader of the current thread whenever it is discovered in the class loader list.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean addClassLoader​(int index, java.lang.ClassLoader loader)
      Add the given class loader at the specified index.
      boolean addClassLoader​(java.lang.ClassLoader loader)
      Add the given class loader to the set of loaders that will be tried.
      boolean addClassLoaders​(int index, MultiClassLoader multi)
      Adds all class loaders from the given multi loader starting at the given index.
      boolean addClassLoaders​(MultiClassLoader multi)
      Adds all the class loaders from the given multi loader.
      void clear()
      Clear the list of class loaders.
      boolean containsClassLoader​(java.lang.ClassLoader loader)
      Returns true if the list contains the given class loader or marker.
      boolean equals​(java.lang.Object other)  
      protected java.lang.Class<?> findClass​(java.lang.String name)  
      protected java.net.URL findResource​(java.lang.String name)  
      protected java.util.Enumeration<java.net.URL> findResources​(java.lang.String name)  
      java.lang.ClassLoader getClassLoader​(int index)
      Return the class loader at the given index.
      java.lang.ClassLoader[] getClassLoaders()
      Return an array of all contained class loaders.
      int hashCode()  
      boolean isEmpty()
      Return true if there are no internal class laoders.
      boolean removeClassLoader​(java.lang.ClassLoader loader)
      Remove the given loader from the list.
      void setClassLoaders​(MultiClassLoader multi)
      Set the class loaders of this loader to those of the given loader.
      int size()
      Return the number of internal class loaders.
      • 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, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • THREAD_LOADER

        public static final java.lang.ClassLoader THREAD_LOADER
        Marker that will be replaced with the context loader of the current thread whenever it is discovered in the class loader list.
      • SYSTEM_LOADER

        public static final java.lang.ClassLoader SYSTEM_LOADER
        The standard system class loader.
    • Constructor Detail

      • MultiClassLoader

        public MultiClassLoader()
        Constructor; initializes the loader with an empty list of delegates.
      • MultiClassLoader

        public MultiClassLoader​(MultiClassLoader other)
        Construct with the class loaders of another multi loader.
      • MultiClassLoader

        public MultiClassLoader​(java.lang.ClassLoader... loaders)
    • Method Detail

      • containsClassLoader

        public boolean containsClassLoader​(java.lang.ClassLoader loader)
        Returns true if the list contains the given class loader or marker.
      • getClassLoaders

        public java.lang.ClassLoader[] getClassLoaders()
        Return an array of all contained class loaders.
      • getClassLoader

        public java.lang.ClassLoader getClassLoader​(int index)
        Return the class loader at the given index.
      • addClassLoader

        public boolean addClassLoader​(java.lang.ClassLoader loader)
        Add the given class loader to the set of loaders that will be tried.
        Returns:
        true if the loader was added, false if already in the list
      • addClassLoader

        public boolean addClassLoader​(int index,
                                      java.lang.ClassLoader loader)
        Add the given class loader at the specified index.
        Returns:
        true if the loader was added, false if already in the list
      • setClassLoaders

        public void setClassLoaders​(MultiClassLoader multi)
        Set the class loaders of this loader to those of the given loader.
      • addClassLoaders

        public boolean addClassLoaders​(int index,
                                       MultiClassLoader multi)
        Adds all class loaders from the given multi loader starting at the given index.
        Returns:
        true if any loaders were added, false if all already in list
      • addClassLoaders

        public boolean addClassLoaders​(MultiClassLoader multi)
        Adds all the class loaders from the given multi loader.
        Returns:
        true if any loaders were added, false if all already in list
      • removeClassLoader

        public boolean removeClassLoader​(java.lang.ClassLoader loader)
        Remove the given loader from the list.
        Returns:
        true if removed, false if not in list
      • clear

        public void clear()
        Clear the list of class loaders.
      • size

        public int size()
        Return the number of internal class loaders.
      • isEmpty

        public boolean isEmpty()
        Return true if there are no internal class laoders.
      • findClass

        protected java.lang.Class<?> findClass​(java.lang.String name)
                                        throws java.lang.ClassNotFoundException
        Overrides:
        findClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • findResource

        protected java.net.URL findResource​(java.lang.String name)
        Overrides:
        findResource in class java.lang.ClassLoader
      • findResources

        protected java.util.Enumeration<java.net.URL> findResources​(java.lang.String name)
                                                             throws java.io.IOException
        Overrides:
        findResources in class java.lang.ClassLoader
        Throws:
        java.io.IOException
      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object