Java Eclipse RCP从启动屏幕重启应用程序

Java Eclipse RCP从启动屏幕重启应用程序,java,eclipse,eclipse-rcp,workbench,p2,Java,Eclipse,Eclipse Rcp,Workbench,P2,我正在实现一个3.x/e4混合RCP应用程序: TL;博士 登录splash->必要时更新客户端->立即重新启动工作台 全部故事 启动屏幕显示,其中有一个登录组件。这是通过扩展AbstractSplashHandler 用户写入用户名、密码、服务器地址和端口。按下登录按钮后,将通过联系提供地址的服务器来执行P2更新检查 若服务器是可访问的,并且更新可用,那个么会询问用户是否要更新。这些更新是强制性的,因此他/她不能进入系统,除非它是最新的 如果用户按YES,则将执行P2更新。完成后,我想自动

我正在实现一个3.x/e4混合RCP应用程序:


TL;博士

登录splash->必要时更新客户端->立即重新启动工作台


全部故事

  • 启动屏幕显示,其中有一个登录组件。这是通过扩展
    AbstractSplashHandler

  • 用户写入用户名、密码、服务器地址和端口。按下
    登录
    按钮后,将通过联系提供地址的服务器来执行P2更新检查

  • 若服务器是可访问的,并且更新可用,那个么会询问用户是否要更新。这些更新是强制性的,因此他/她不能进入系统,除非它是最新的

  • 如果用户按YES,则将执行P2更新。完成后,我想自动重启工作台

  • 重新启动时出现了一些问题:

  • 在splash生命周期中,
    PlatformUI.getWorkbench()
    不会返回
    null
    ,但也不会完全初始化。因此,如果我调用
    IWorkbench#restart
    会抛出一些内部NPE(我可以根据请求将它们放在这里)

  • 我考虑在
    应用程序
    类中进行版本检查,在那里我可以返回
    应用程序。退出\u重新启动
    代码-但我还没有看到飞溅。我真的很想在splash中登录

  • i工作台#重启
    系统退出(0)
    之间是否存在中间地带?我希望在
    平台ui#createAndRunWorkbench
    之后的
    应用程序
    类中,使用重新启动的代码达到这一点