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

4 eclipse-rcp

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

谢谢

Von*_*onC 11

这个线程在这方面很有意思(它解释了为什么它在从eclipse运行RCP时起作用,而不是在独立运行时)

如果工作台重新启动,例如via IWorkbench.restart(),则导致PlatformUI.createAndRunWorkbench(...)返回对应用程序的控制(IPlatformRunnable应用程序扩展的实现),返回代码为PlatformUI.RETURN_RESTART(值为1).

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

然后,这将成为Java VM的退出代码(即System.exit(code)).
eclipse.exe可执行文件检测到这个特殊的代码,并使用相同的命令行参数在第一时间将重新启动Java虚拟机.

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

因此,您的RCP中的代码需要由某种启动器管理,以便解释(并在需要时重新启动rcp应用程序)现有代码.
(有点像这个远程RCP管理维基页面)

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();
  }
}
Run Code Online (Sandbox Code Playgroud)