org.apache.nutch.plugin

## Class PluginClassLoader

- java.lang.Object
- - java.lang.ClassLoader
  - - java.security.SecureClassLoader
    - - java.net.URLClassLoader
      - - org.apache.nutch.plugin.PluginClassLoader

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class PluginClassLoader
      extends URLClassLoader

  The `PluginClassLoader` is a child-first classloader that only contains classes of the runtime libraries setuped in the plugin manifest file and exported libraries of plugins that are required plugins. Libraries can be exported or not. Not exported libraries are only used in the plugin own `PluginClassLoader`. Exported libraries are available for `PluginClassLoader` of plugins that depends on these plugins.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PluginClassLoader(URL[] urls, ClassLoader parent)` Construtor

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `equals(Object obj)`
    `URL` | `getResource(String name)`
    `InputStream` | `getResourceAsStream(String name)`
    `Enumeration<URL>` | `getResources(String name)`
    `int` | `hashCode()`
    `protected Class<?>` | `loadClass(String name, boolean resolve)`

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

      `addURL, close, definePackage, findClass, findResource, findResources, getPermissions, 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, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners`

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

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

- - ### Constructor Detail

    - #### PluginClassLoader

          public PluginClassLoader(URL[] urls,
                                   ClassLoader parent)

      Construtor
      Parameters:
        `urls` - Array of urls with own libraries and all exported libraries of plugins that are required to this plugin
        `parent` -

  - ### Method Detail

    - #### loadClass

          protected Class<?> loadClass(String name,
                                       boolean resolve)
                                throws ClassNotFoundException

      Overrides:
        `loadClass` in class `ClassLoader`
      Throws:
        `ClassNotFoundException`

    - #### getResource

          public URL getResource(String name)

      Overrides:
        `getResource` in class `ClassLoader`

    - #### getResources

          public Enumeration<URL> getResources(String name)
                                        throws IOException

      Overrides:
        `getResources` in class `ClassLoader`
      Throws:
        `IOException`

    - #### getResourceAsStream

          public InputStream getResourceAsStream(String name)

      Overrides:
        `getResourceAsStream` in class `URLClassLoader`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`

Copyright © 2020 The Apache Software Foundation