Class PluginClassLoader

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class PluginClassLoader
    extends URLClassLoader
    A custom implementation of URLClassLoader for Pentaho Platform Plugins. It is used to load plugin jars and classes and aids in retrieving resources by providing a root directory to search for resources related to plugins.

    Note: PluginClassLoader will search for jar files in a 'lib' subdirectory under the pluginDir provided in the constructor. Class and other resources will be visible to this classloader in either the root directory of the plugin or in the lib folder.

    Author:
    aphillips
    • Constructor Detail

      • PluginClassLoader

        public PluginClassLoader​(File pluginDir,
                                 ClassLoader parent)
        Creates a class loader for loading plugin classes and discovering resources. Jars must be located in [pluginDir]/lib.
        Parameters:
        pluginDir - the root directory of the plugin
        parent - the parent classloader
      • PluginClassLoader

        public PluginClassLoader​(File pluginDir,
                                 Object o)
        Convenience method that creates a PluginClassLoader with the current classloader as it's parent.
        Parameters:
        pluginDir - the root directory of the plugin
        o - the object from which the parent classloader will be derived
    • Method Detail

      • setOverrideLoad

        public void setOverrideLoad​(boolean b)
        Controls whether or not this classloader will eagerly load a class requested by loadClass(String, boolean) ahead of the parent classloader. or delegate the load to the parent. If this method is not called, the default behavior will apply which is to *not* override classloading.
        Parameters:
        b - if true, loadClass method will look to this loader first to load a class, otherwise, the parent classloader will be queried first.
      • getPluginUrls

        protected static URL[] getPluginUrls​(File pluginDir)
      • addJars

        protected static void addJars​(List<URL> urls,
                                      File folder)
      • getPluginDir

        public File getPluginDir()