## org.gjt.sp.jedit
Class PluginJAR

    java.lang.Object
      org.gjt.sp.jedit.PluginJAR

Direct Known Subclasses:
  EditPlugin.JAR

public class PluginJAR
extends java.lang.Object

Loads and unloads plugins.

### JAR file contents

When loading a plugin, jEdit looks for the following resources:

- A file named `actions.xml` defining plugin actions. Only one such file per plugin is allowed. See `ActionSet` for syntax.
- A file named `browser.actions.xml` defining file system browser actions. Only one such file per plugin is allowed. See `ActionSet` for syntax.
- A file named `dockables.xml` defining dockable windows. Only one such file per plugin is allowed. See `DockableWindowManager` for syntax.
- A file named `services.xml` defining additional services offered by the plugin, such as virtual file systems. Only one such file per plugin is allowed. See `ServiceManager` for syntax.
- File with extension `.props` containing name/value pairs separated by an equals sign. A plugin can supply any number of property files. Property files are used to define plugin men items, plugin option panes, as well as arbitriary settings and strings used by the plugin. See `EditPlugin` for information about properties used by jEdit. See `java.util.Properties` for property file syntax.

For a plugin to actually do something once it is resident in memory, it must contain a class whose name ends with `Plugin`. This class, known as the plugin core class must extend `EditPlugin` and define a few required properties, otherwise it is ignored.

### Dynamic and deferred loading

Unlike in prior jEdit versions, jEdit 4.2 and later allow plugins to be added and removed to the resident set at any time using the `jEdit.addPluginJAR(String)` and `jEdit.removePluginJAR(PluginJAR,boolean)` methods. Furthermore, the plugin core class might not be loaded until the plugin is first used. See `EditPlugin.start()` for a full description.

Since:
  jEdit 4.2pre1
Version:
  $Id: PluginJAR.java,v 1.47 2004/04/20 19:58:39 spestov Exp $
Author:
  Slava Pestov
See Also:
  `jEdit.getProperty(String)`, `jEdit.getPlugin(String)`, `jEdit.getPlugins()`, `jEdit.getPluginJAR(String)`, `jEdit.getPluginJARs()`, `jEdit.addPluginJAR(String)`, `jEdit.removePluginJAR(PluginJAR,boolean)`, `ActionSet`, `DockableWindowManager`, `OptionPane`, `PluginJAR`, `ServiceManager`

Nested Class Summary
`static class` `PluginJAR.PluginCacheEntry` Used by the `DockableWindowManager` and `ServiceManager` to handle caching.

Method Summary
`void` `activatePlugin()` Loads the plugin core class.
`void` `activatePluginIfNecessary()` Should be called after a new plugin is installed.
`boolean` `checkDependencies()` Returns true if all dependencies are satisified, false otherwise.
`void` `deactivatePlugin(boolean exit)` Unloads the plugin core class.
`ActionSet` `getActions()` Deprecated. Call getActionSet() instead
`ActionSet` `getActionSet()` Returns the plugin's action set for the jEdit action context `jEdit.getActionContext()`.
`ActionSet` `getBrowserActionSet()` Returns the plugin's action set for the file system browser action context `VFSBrowser.getActionContext()`.
`java.lang.String` `getCachePath()` Returns the full path name of this plugin's summary file.
`JARClassLoader` `getClassLoader()` Returns the plugin's class loader.
`java.lang.String[]` `getDependentPlugins()` Returns an array of all plugins that depend on this one.
`java.net.URL` `getDockablesURI()` Returns the location of the plugin's `dockables.xml` file.
`java.io.File` `getFile()` Returns a file pointing to the plugin JAR.
`java.lang.String` `getPath()` Returns the full path name of this plugin's JAR file.
`EditPlugin` `getPlugin()` Returns the plugin core class for this JAR file.
`java.net.URL` `getServicesURI()` Returns the location of the plugin's `services.xml` file.
`java.util.zip.ZipFile` `getZipFile()` Returns the plugin's JAR file, opening it if necessary.
`java.lang.String` `toString()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Method Detail

### getPath

    public java.lang.String getPath()

  Returns the full path name of this plugin's JAR file.

### getCachePath

    public java.lang.String getCachePath()

  Returns the full path name of this plugin's summary file. The summary file is used to store certain information which allows loading of the plugin's resources and core class to be deferred until the plugin is first used. As long as a plugin is using the jEdit 4.2 plugin API, no extra effort is required to take advantage of the summary cache.

### getFile

    public java.io.File getFile()

  Returns a file pointing to the plugin JAR.

### getClassLoader

    public JARClassLoader getClassLoader()

  Returns the plugin's class loader.

### getZipFile

    public java.util.zip.ZipFile getZipFile()
                                     throws java.io.IOException

  Returns the plugin's JAR file, opening it if necessary.

  Throws:
    `java.io.IOException`
  Since:
    jEdit 4.2pre1

### getActions

    public ActionSet getActions()

  Deprecated. Call getActionSet() instead

### getActionSet

    public ActionSet getActionSet()

  Returns the plugin's action set for the jEdit action context `jEdit.getActionContext()`. These actions are loaded from the `actions.xml` file; see `ActionSet`. .

  Since:
    jEdit 4.2pre1

### getBrowserActionSet

    public ActionSet getBrowserActionSet()

  Returns the plugin's action set for the file system browser action context `VFSBrowser.getActionContext()`. These actions are loaded from the `browser.actions.xml` file; see `ActionSet`. .

  Since:
    jEdit 4.2pre1

### checkDependencies

    public boolean checkDependencies()

  Returns true if all dependencies are satisified, false otherwise. Also if dependencies are not satisfied, the plugin is marked as "broken".

### getDependentPlugins

    public java.lang.String[] getDependentPlugins()

  Returns an array of all plugins that depend on this one.

  Since:
    jEdit 4.2pre2

### getPlugin

    public EditPlugin getPlugin()

  Returns the plugin core class for this JAR file. Note that if the plugin has not been activated, this will return an instance of `EditPlugin.Deferred`. If you need the actual plugin core class instance, call `activatePlugin()` first.

  Since:
    jEdit 4.2pre1

### activatePlugin

    public void activatePlugin()

  Loads the plugin core class. Does nothing if the plugin core class has already been loaded. This method might be called on startup, depending on what properties are set. See `EditPlugin.start()`. This method is thread-safe.

  Since:
    jEdit 4.2pre1

### activatePluginIfNecessary

    public void activatePluginIfNecessary()

  Should be called after a new plugin is installed.

  Since:
    jEdit 4.2pre2

### deactivatePlugin

    public void deactivatePlugin(boolean exit)

  Unloads the plugin core class. Does nothing if the plugin core class has not been loaded. This method can only be called from the AWT event dispatch thread!

  Since:
    jEdit 4.2pre3
  See Also:
    `EditPlugin.stop()`

### getDockablesURI

    public java.net.URL getDockablesURI()

  Returns the location of the plugin's `dockables.xml` file.

  Since:
    jEdit 4.2pre1

### getServicesURI

    public java.net.URL getServicesURI()

  Returns the location of the plugin's `services.xml` file.

  Since:
    jEdit 4.2pre1

### toString

    public java.lang.String toString()