Class DelegatingClassLoader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class DelegatingClassLoader
    extends java.net.URLClassLoader
    A URL classloader that delegates to its parent, avoiding synchronization. A standard flag is provided so it can be used as a parent class, but later subclassed and to revert to standard class loading if the subclass wants to load classes.
    Version:
    $Revision$
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.net.URL[] EMPTY_URL_ARRAY
      The value returned by URLClassLoader.getURLs().
      private java.lang.ClassLoader parent
      Cache the parent
      protected boolean standard
      Whether to use standard loading
    • Constructor Summary

      Constructors 
      Constructor Description
      DelegatingClassLoader​(java.lang.ClassLoader parent)
      Constructor
      DelegatingClassLoader​(java.lang.ClassLoader parent, java.net.URLStreamHandlerFactory factory)
      Constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Class<?> loadClass​(java.lang.String className, boolean resolve)
      Load a class, by asking the parent
      • Methods inherited from class java.net.URLClassLoader

        addURL, close, definePackage, findClass, findResource, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
      • Methods inherited from class java.security.SecureClassLoader

        defineClass, defineClass
      • 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, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

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

      • EMPTY_URL_ARRAY

        public static final java.net.URL[] EMPTY_URL_ARRAY
        The value returned by URLClassLoader.getURLs().
      • standard

        protected boolean standard
        Whether to use standard loading
      • parent

        private java.lang.ClassLoader parent
        Cache the parent
    • Constructor Detail

      • DelegatingClassLoader

        public DelegatingClassLoader​(java.lang.ClassLoader parent)
        Constructor
        Parameters:
        parent - the parent classloader, cannot be null.
      • DelegatingClassLoader

        public DelegatingClassLoader​(java.lang.ClassLoader parent,
                                     java.net.URLStreamHandlerFactory factory)
        Constructor
        Parameters:
        parent - the parent classloader, cannot be null.
        factory - the url stream factory.
    • Method Detail

      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String className,
                                               boolean resolve)
                                        throws java.lang.ClassNotFoundException
        Load a class, by asking the parent
        Overrides:
        loadClass in class java.lang.ClassLoader
        Parameters:
        className - the class name to load
        resolve - whether to link the class
        Returns:
        the loaded class
        Throws:
        java.lang.ClassNotFoundException - when the class could not be found