2017-04-12 80 views
1

我需要在关闭和开始应用程序之间执行一些操作。如何分割PlatformUI.getWorkbench()。restart()步骤?

所以我写PlatformUI.getWorkbench()。close()来关闭应用程序,我正在执行我需要的操作。现在我不知道如何再次启动工作台。

代码片段:

PlatformUI.getWorkbench().close(); <- closing application 

//Executing set of task ; <- trying to uninstall some plugins and features. While uninstalling application should not be opened so added above step. 

PlatformUI.getWorkbench().restart(); <- again trying to open application but facing swt null pointer exception 

回答

1

如果你只是想关闭之前,用做的东西:

org.eclipse.ui.application.WorkbenchAdvisor.preShutdown() 
org.eclipse.ui.application.WorkbenchAdvisor.postShutdown() 

在你的主RCP插件应该有扩展org.eclipse.ui.application.WorkbenchAdvisor类。

public class MyApplicationWorkbenchAdvisor extends WorkbenchAdvisor { 

    @Override 
    public boolean preShutdown() { 
     // ... YOUR CODE 
    } 
} 

如果你想重新启动工作台手动你可以使用:

PlatformUI.getWorkbench().restart() 
+0

谢谢您的答复。我需要做一些只有在关闭后才能工作的任务(使用PlatformUI.getWorkbench()。close())。然后我执行我的任务。之后,我需要打开相同的工作台(应该在关机前获得相同的视角和视图)。是否可以打开相同的工作台? – Sunil

+0

并启动应用程序,如果我使用重新启动方法,那么我得到swt空指针异常。 – Sunil

+0

'重新启动()'应该带回以前的观点和看法。如果工作台已经关闭,那么你在什么时候调用'restart()',PlatformUI.getWorkbench()'可能为空。 –