以编程方式关闭Eclipse Application

时间:2010-05-11 09:49:48

标签: java eclipse-rcp

我想要关闭一个Eclipse应用程序。问题是它是一个无头应用程序,所以我不能使用以下方法:

PlatformUI.getWorkbench().close();

我可以用什么方法干净地关闭应用程序?

我的主插件,即定义产品和应用程序的插件,包含以下依赖项:

  • org.eclipse.core.runtime

这就是它。

我使用扩展点:

  • 了org.eclipse.core.runtime.applications

定义我的应用。

我为它创建了一个Swing UI,我希望能够在某个过程完成后关闭应用程序,或者由于用户操作而关闭应用程序。我想知道Eclipse中是否有任何API可以做到这一点,或者在这种情况下我自己处理UI,我是否必须通过退出实现IApplication的类来关闭应用程序。

1 个答案:

答案 0 :(得分:1)

可能正在使用ResourcesPlugin服务吗?

有关停止方法的示例,请参阅this class(我知道它是AbstractUI类,但它基本上是Plugin,如果您有这样的类派生自插件,您可以实施org.osgi.framework.BundleActivator#stop方法。

/**
 * Shuts down this plug-in and discards all plug-in state.
 * 
 * @exception CoreException
 *                If this method fails to shut down this plug-in.
 * 
 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
 */
public final void stop(BundleContext context) throws Exception {
    try {

        /* Unregister as a save participant */
        if (ResourcesPlugin.getWorkspace() != null) {
            ResourcesPlugin.getWorkspace().removeSaveParticipant(this);
        }

    } catch (Exception e) {
        throw new CoreException(new Status(IStatus.ERROR,
            getSymbolicName(), CommonUIStatusCodes.PLUGIN_SHUTDOWN_FAILURE,
            getShutdownErrorMessage(getPluginName()), e));
    } finally {
        super.stop(context);
    }
}

(显然,不要使用CommonUIStatusCodes