SplitClassLoader (Apache Ant API)
Date: 2017-02-02

org.apache.tools.ant.util

## Class SplitClassLoader

- java.lang.Object
- - java.lang.ClassLoader
  - - org.apache.tools.ant.AntClassLoader
    - - org.apache.tools.ant.util.SplitClassLoader

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.util.EventListener, BuildListener, SubBuildListener

      public final class SplitClassLoader
      extends AntClassLoader

  Specialized classloader for tasks that need finer grained control over which classes are to be loaded via Ant's classloader and which should not even if they are available.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SplitClassLoader(java.lang.ClassLoader parent, Path path, Project project, java.lang.String[] splitClasses)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected java.lang.Class` | `loadClass(java.lang.String classname, boolean resolve)` Loads a class with this class loader.

    - ### Methods inherited from class org.apache.tools.ant.AntClassLoader

      `addJavaLibraries, addLoaderPackageRoot, addPathComponent, addPathElement, addPathFile, addSystemPackageRoot, buildFinished, buildStarted, cleanup, close, defineClassFromData, definePackage, definePackage, findClass, findResources, findResources, forceLoadClass, forceLoadSystemClass, getClasspath, getConfiguredParent, getNamedResources, getResource, getResourceAsStream, getResources, getResourceURL, initializeClass, isInPath, log, messageLogged, newAntClassLoader, resetThreadContextLoader, setClassPath, setIsolated, setParent, setParentFirst, setProject, setThreadContextLoader, subBuildFinished, subBuildStarted, targetFinished, targetStarted, taskFinished, taskStarted, toString`

    - ### Methods inherited from class java.lang.ClassLoader

      `clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### SplitClassLoader

          public SplitClassLoader(java.lang.ClassLoader parent,
                                  Path path,
                                  Project project,
                                  java.lang.String[] splitClasses)

      Parameters:
        `splitClasses` - classes contained herin will not be loaded via Ant's classloader

  - ### Method Detail

    - #### loadClass

          protected java.lang.Class loadClass(java.lang.String classname,
                                              boolean resolve)
                                       throws java.lang.ClassNotFoundException

      Description copied from class: `AntClassLoader`
      Loads a class with this class loader. This class attempts to load the class in an order determined by whether or not the class matches the system/loader package lists, with the loader package list taking priority. If the classloader is in isolated mode, failure to load the class in this loader will result in a ClassNotFoundException.
      Overrides:
        `loadClass` in class `AntClassLoader`
      Parameters:
        `classname` - The name of the class to be loaded. Must not be `null`.
        `resolve` - `true` if all classes upon which this class depends are to be loaded.
      Returns:
        the required Class object
      Throws:
        `java.lang.ClassNotFoundException` - if the requested class does not exist on the system classpath (when not in isolated mode) or this loader's classpath.