2017-04-12 81 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()'可能爲空。 –