使用’PlatformUI.getWorkbench()。restart()’重启Eclipse不会重启RCP产品

在调用PlatformUI.getWorkbench().restart() ,应用程序只是关闭并拒绝重新启动产品。

您的IApplication需要在start方法中检查PlatformUI.createAndRunWorkbench的返回码:

最简单的是:

 int returnCode = PlatformUI.createAndRunWorkbench(display, advisor); if (returnCode == PlatformUI.RETURN_RESTART) return IApplication.EXIT_RESTART; return IApplication.EXIT_OK; 

最近的应用似乎使用这个:

 private static final String SYSTEM_PROPERTY_EXIT_CODE = "eclipse.exitcode"; int returnCode = PlatformUI.createAndRunWorkbench(display, advisor); if (returnCode == PlatformUI.RETURN_RESTART) { // eclipse.exitcode system property may be set to re-launch if (IApplication.EXIT_RELAUNCH.equals(Integer.getInteger(SYSTEM_PROPERTY_EXIT_CODE))) return IApplication.EXIT_RELAUNCH; return IApplication.EXIT_RESTART; } return IApplication.EXIT_OK;