# 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.

## 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 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