重启独立RCp应用程序的问题

时间:2009-10-06 20:10:47

标签: eclipse-rcp

我在重启RCP应用程序时遇到问题。当我在Eclipse下运行时一切正常,但是当我创建独立的应用程序方法时,只需关闭应用程序即可。我用下一个代码: IWorkbench workbench = PlatformUI.getWorkbench(); workbench.restart(); 有人知道如何解决这个问题。

感谢

1 个答案:

答案 0 :(得分:11)

这方面的线程is interesting(它解释了为什么它在从eclipse运行RCP时起作用,而不是在独立运行时)

  

如果工作台重新启动,例如通过IWorkbench.restart(),导致PlatformUI.createAndRunWorkbench(...)将控制权返回给应用程序(应用程序扩展的IPlatformRunnable实现),返回代码为PlatformUI.RETURN_RESTART(值为1)。 / p>      

然后,应用程序必须将此映射到应用程序返回代码IPlatformRunnable.EXIT_RESTART(值为23)。

     

然后它成为Java VM的退出代码(即System.exit(code))    eclipse.exe可执行文件检测到此特殊代码,并使用与第一次相同的命令行参数重新启动Java VM。

     

如果你没有使用eclipse.exe但是自己直接启动java VM,它将不会自动重启。您需要自己处理退出代码。

所以你的RCP中的代码需要被某种启动程序管理,以便解释(并在需要时重新启动rcp应用程序)现有代码。
(有点像这个远程RCP管理wiki page

WorkbenchAdvisor workbenchAdvisor = new CoreAppWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
try {
  int returnCode = PlatformUI.createAndRunWorkbench(display, workbenchAdvisor);
  if (returnCode == PlatformUI.RETURN_RESTART)
    return IPlatformRunnable.EXIT_RESTART;
  else
    return IPlatformRunnable.EXIT_OK;
  }
  finally {
    display.dispose();
  }
}