Class 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.
    • Constructor Detail

      • EclipseStarter

        public EclipseStarter()
    • Method Detail

      • 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.