gpt4 book ai didi

java - Eclipse RCP - 如何在工作台初始化之前关闭

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:47 25 4
gpt4 key购买 nike

我有与下面类似的设置:

<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
name="%product.name"
application="org.eclipse.e4.ui.workbench.swt.E4Application">
<property
name="lifeCycleURI"
value="bundleclass://plugin-id/package.LifeCycle">
</property>
.... more properties ...
public class LifeCycle
{
@PostConstruct
public void doWork()
{
// Show a login screen. If the user cancels out of it, shut down
// the application.
}
}

在上述场景中,正确关闭应用程序的正确方法是什么?如果我这样做:

PlatformUI.getWorkbench().close()

我收到错误,因为它尚未初始化。如果我这样做:

System.exit(0)

然后我杀死 JVM 上的所有其他东西(尽管建议在这里这样做 http://www.vogella.com/tutorials/Eclipse4LifeCycle/article.html )

关于如何做到这一点有什么想法/建议吗?

最佳答案

PlatformUI 在 e4 应用程序中不可用,请勿尝试使用它。

@PostConstruct 在 LifeCycle 类中执行任何操作还为时过早。您应该尝试执行任何操作的第一点是 @PostContextCreate 方法。

您可以注入(inject)org.eclipse.e4.ui.workbench.IWorkbench并调用close方法来关闭e4应用程序。但是,直到应用程序启动完成后,工作台才可用,因此您需要等待此事件。

public class LifeCycle
{
@PostContextCreate
public void postContextCreate(IEclipseContext context, IEventBroker eventBroker)
{
...

eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE,
new AppStartupCompleteEventHandler(eventBroker, context));
}
}


class AppStartupCompleteEventHandler implements EventHandler
{
private IEventBroker _eventBroker;
private IEclipseContext _context;


AppStartupCompleteEventHandler(IEventBroker eventBroker, IEclipseContext context)
{
_eventBroker = eventBroker;
_context = context;
}

@Override
public void handleEvent(final Event event)
{
_eventBroker.unsubscribe(this);

IWorkbench workbench = _context.get(IWorkbench.class);

workbench.close();
}
}

关于java - Eclipse RCP - 如何在工作台初始化之前关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28507982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com