Проблема с перезагрузкой автономного приложения RCp - PullRequest
4 голосов
/ 07 октября 2009

У меня проблема с перезапуском приложения RCP. Когда я запускаю под Eclipse, все в порядке, но когда я создаю автономный метод приложения, перезапускаю просто закрыть приложения. Я использую следующий код: IWorkbench workbench = PlatformUI.getWorkbench (); workbench.restart (); Кто-нибудь знает, как решить эту проблему.

СПАСИБО

1 Ответ

11 голосов
/ 07 октября 2009

Этот поток интересен в этом отношении (он объясняет, почему он работает, когда RCP запускается из затмения, а не при автономной работе)

Если рабочая среда перезапускается, например, через IWorkbench.restart(), что заставляет PlatformUI.createAndRunWorkbench(...) вернуть управление приложению (реализация IPlatformRunnable для расширения приложения) с кодом возврата PlatformUI.RETURN_RESTART (значение равно 1).

Затем приложение должно сопоставить это с кодом возврата приложения IPlatformRunnable.EXIT_RESTART (значение равно 23).

Затем он становится кодом выхода виртуальной машины Java (т. Е. System.exit(code)).
Исполняемый файл eclipse.exe обнаруживает этот специальный код и перезапускает виртуальную машину Java, используя те же аргументы командной строки, что и в первый раз.

Если вы не используете eclipse.exe, но запускаете Java-машину непосредственно, она не будет перезагружаться автоматически. Вам нужно будет обработать код выхода самостоятельно.

Таким образом, подобный код в вашем 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();
  }
}
...