Package ghidra

# Class GhidraClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
ghidra.GhidraClassLoader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class GhidraClassLoader extends URLClassLoader
Custom Ghidra URL class loader which exposes the addURL method so we can add to the classpath at runtime.

This class loader must be installed by setting the "java.system.class.loader" system property prior to launch (i.e., the JVM should be launched with the following argument: -Djava.system.class.loader=ghidra.GhidraClassLoader.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `CP`
  The classpath system property: `java.class.path`
  `static final String`
  `CP_EXT`
  The extensions classpath system property: `java.class.path.ext`
  `static final String`
  `ENABLE_RESTRICTED_EXTENSIONS_PROPERTY`
  When 'true', this property will trigger the system to put each Extension module's lib jar files into the `CP_EXT` property.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GhidraClassLoader(ClassLoader parent)`
  This one-argument constructor is required for the JVM to successfully use this class loader via the java.system.class.loader system property.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `addPath(String path)`
  Converts the specified path to a `URL` and adds it to the classpath.
  `void`
  `addURL(URL url)`

  ### Methods inherited from class java.net.URLClassLoader

  `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, 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 Details

  - ### ENABLE_RESTRICTED_EXTENSIONS_PROPERTY

    public static final String ENABLE_RESTRICTED_EXTENSIONS_PROPERTY
    When 'true', this property will trigger the system to put each Extension module's lib jar files into the `CP_EXT` property.
    See Also:
      - Constant Field Values

  - ### CP

    public static final String CP
    The classpath system property: `java.class.path`
    See Also:
      - Constant Field Values

  - ### CP_EXT

    public static final String CP_EXT
    The extensions classpath system property: `java.class.path.ext`
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### GhidraClassLoader

    public GhidraClassLoader(ClassLoader parent)
    This one-argument constructor is required for the JVM to successfully use this class loader via the java.system.class.loader system property.
    Parameters:
      `parent` - The parent class loader for delegation

- ## Method Details

  - ### addURL

    public void addURL(URL url)
    Overrides:
      `addURL` in class `URLClassLoader`

  - ### addPath

    public boolean addPath(String path)
    Converts the specified path to a `URL` and adds it to the classpath.
    Parameters:
      `path` - The path to be added.
    Returns:
      True if the path was successfully added; otherwise, false. Failure can occur if the path is not able to be converted to a URL.
    See Also:
      - `addURL(URL)`