Class EclipseStarter

java.lang.Object
org.eclipse.core.runtime.adaptor.EclipseStarter

public class EclipseStarter extends Object
Special startup class for the Eclipse Platform. This class cannot be instantiated; all functionality is provided by static methods.

The Eclipse Platform makes heavy use of Java class loaders for loading plug-ins. Even the Eclipse Runtime itself and the OSGi framework need to be loaded by special class loaders. The upshot is that a client program (such as a Java main program, a servlet) cannot reference any part of Eclipse directly. Instead, a client must use this loader class to start the platform, invoking functionality defined in plug-ins, and shutting down the platform when done.

Note that the fields on this class are not API.

Since:
3.0
Restriction:
This class is not intended to be subclassed by clients.
  • Field Details

  • Constructor Details

    • EclipseStarter

      public EclipseStarter()
  • Method Details

    • main

      public static void main(String[] args) throws Exception
      This is the main to start osgi. It only works when the framework is being jared as a single jar
      Throws:
      Exception
    • run

      public static Object run(String[] args, Runnable endSplashHandler) throws Exception
      Launches the platform and runs a single application. The application is either identified in the given arguments (e.g., -application <app id>) or in the eclipse.application System property. This convenience method starts up the platform, runs the indicated application, and then shuts down the platform. The platform must not be running already.
      Parameters:
      args - the command line-style arguments used to configure the platform
      endSplashHandler - the block of code to run to tear down the splash screen or null if no tear down is required
      Returns:
      the result of running the application
      Throws:
      Exception - if anything goes wrong
    • isRunning

      public static boolean isRunning()
      Returns true if the platform is already running, false otherwise.
      Returns:
      whether or not the platform is already running
    • startup

      public static BundleContext startup(String[] args, Runnable endSplashHandler) throws Exception
      Starts the platform and sets it up to run a single application. The application is either identified in the given arguments (e.g., -application <app id>) or in the eclipse.application System property. The platform must not be running already.

      The given runnable (if not null) is used to tear down the splash screen if required.

      Parameters:
      args - the arguments passed to the application
      Returns:
      BundleContext the context of the system bundle
      Throws:
      Exception - if anything goes wrong
    • run

      public static Object run(Object argument) throws Exception
      Runs the application for which the platform was started. The platform must be running.

      The given argument is passed to the application being run. If it is null then the command line arguments used in starting the platform, and not consumed by the platform code, are passed to the application as a String[].

      Parameters:
      argument - the argument passed to the application. May be null
      Returns:
      the result of running the application
      Throws:
      Exception - if anything goes wrong
    • shutdown

      public static void shutdown() throws Exception
      Shuts down the Platform. The state of the Platform is not automatically saved before shutting down.

      On return, the Platform will no longer be running (but could be re-launched with another call to startup). If relaunching, care must be taken to reinitialize any System properties which the platform uses (e.g., osgi.instance.area) as some policies in the platform do not allow resetting of such properties on subsequent runs.

      Any objects handed out by running Platform, including Platform runnables obtained via getRunnable, will be permanently invalid. The effects of attempting to invoke methods on invalid objects is undefined.

      Throws:
      Exception - if anything goes wrong
    • getSysPath

      protected static String getSysPath()
    • setInitialProperties

      public static void setInitialProperties(Map<String,String> initialProperties)
      Sets the initial properties for the platform. This method must be called before calling the run(String[], Runnable) or startup(String[], Runnable) methods for the properties to be used in a launched instance of the platform.

      If the specified properties contains a null value then the key for that value will be cleared from the properties of the platform.

      Parameters:
      initialProperties - the initial properties to set for the platform.
      Since:
      3.2
    • getSystemBundleContext

      public static BundleContext getSystemBundleContext()
      Returns the context of the system bundle. A value of null is returned if the platform is not running.
      Returns:
      the context of the system bundle
      Throws:
      SecurityException - If the caller does not have the appropriate AdminPermission[system.bundle,CONTEXT], and the Java Runtime Environment supports permissions.