ClassLoaderFactory (Apache Tomcat 11.0.8 API Documentation)
Description: declaration: package: org.apache.catalina.startup, class: ClassLoaderFactory

# Class ClassLoaderFactory

java.lang.Object
org.apache.catalina.startup.ClassLoaderFactory

public final class ClassLoaderFactory extends Object

Utility class for building class loaders for Catalina. The factory method requires the following parameters in order to build a new class loader (with suitable defaults in all cases):

- A set of directories containing unpacked classes (and resources) that should be included in the class loader's repositories.
- A set of directories containing classes and resources in JAR files. Each readable JAR file discovered in these directories will be added to the class loader's repositories.
- `ClassLoader` instance that should become the parent of the new class loader.

Author:
  Craig R. McClanahan

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final record`
  `ClassLoaderFactory.Repository`
  `static enum`
  `ClassLoaderFactory.RepositoryType`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClassLoaderFactory()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ClassLoader`
  `createClassLoader(File[] unpacked, File[] packed, ClassLoader parent)`
  Create and return a new class loader, based on the configuration defaults and the specified directory paths:
  `static ClassLoader`
  `createClassLoader(List<ClassLoaderFactory.Repository> repositories, ClassLoader parent)`
  Create and return a new class loader, based on the configuration defaults and the specified directory paths:

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

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

- ## Constructor Details

  - ### ClassLoaderFactory

    public ClassLoaderFactory()

- ## Method Details

  - ### createClassLoader

    public static ClassLoader createClassLoader(File[] unpacked, File[] packed, ClassLoader parent) throws Exception
    Create and return a new class loader, based on the configuration defaults and the specified directory paths:
    Parameters:
      `unpacked` - Array of pathnames to unpacked directories that should be added to the repositories of the class loader, or `null` for no unpacked directories to be considered
      `packed` - Array of pathnames to directories containing JAR files that should be added to the repositories of the class loader, or `null` for no directories of JAR files to be considered
      `parent` - Parent class loader for the new class loader, or `null` for the system class loader.
    Returns:
      the new class loader
    Throws:
      `Exception` - if an error occurs constructing the class loader

  - ### createClassLoader

    public static ClassLoader createClassLoader(List<ClassLoaderFactory.Repository> repositories, ClassLoader parent) throws Exception
    Create and return a new class loader, based on the configuration defaults and the specified directory paths:
    Parameters:
      `repositories` - List of class directories, jar files, jar directories or URLS that should be added to the repositories of the class loader.
      `parent` - Parent class loader for the new class loader, or `null` for the system class loader.
    Returns:
      the new class loader
    Throws:
      `Exception` - if an error occurs constructing the class loader