eclipse在线升级引起的问题

需要升级的product是一个eclipse开发的RCP程序。

升级方式:使用旧UpdateManager升级方式(p2之前的升级方式)。只写了一个功能部件,内包含了6个插件,2fragment

曾多次升级过。然而某一次做了升级包并升级之后。再次启动程序就打不开了。其日志流如下:

!ENTRY org.eclipse.ui 4 0 2012-06-15 14:29:55.171

!MESSAGE Unhandled event loop exception

!STACK 0

org.eclipse.core.runtime.InvalidRegistryObjectException: Invalid registry object

       at org.eclipse.core.internal.registry.RegistryObjectManager.basicGetObject(RegistryObjectManager.java:272)

       at org.eclipse.core.internal.registry.RegistryObjectManager.getObject(RegistryObjectManager.java:262)

       at org.eclipse.core.internal.registry.ConfigurationElementHandle.getConfigurationElement(ConfigurationElementHandle.java:26)

       ……

       at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)

       at com.zxx.frame.Application.start(Application.java:91)

       at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

       at ……

 

!ENTRY org.eclipse.core.jobs 2 2 2012-06-15 14:29:56.015

!MESSAGE Job found still running after platform shutdown.  Jobs should be canceled by the plugin that scheduled them during shutdown: org.eclipse.core.internal.registry.osgi.ExtensionEventDispatcherJob

 

网上有些人在讨论这个问题,我看了一下也没看懂。都只是给出了猜测性的提示。我就无法参考。

但对于我本身的这个问题来说其实还是比较好排查的。

我首先重启了,发现该问题亦然存在。--这肯定是这次的升级包有问题。

于是我删除了此次升级的feature以及plugins,再次打开程序,发现还是不行。

怎么办……?偶然间,我打开了程序的另一份(该份这次没有过),OK,这个是能用的。然后我再打开刚才的问题程序,发现现在已经可以用了。

于是经过反复试验,发现只要升级了该次软件包。就会出问题。并且删除软件包后,必须启动一下一个好的Rcp程序后(一个备份)。才可以使用。于是我也猜想,jvm记住了这个rcp程序的某个东西,这个东西是错误的情况下,不能启动错误提供者RCP程序,但可以启动一个正确的RCP程序,并将这个东西的值正常化。至于这个东西是什么,我也不知道。

 

下面来查查升级包的问题。

观察升级包中plugins中的各个manifest.mf中的版本签名。发现了问题。有一个fragmentmanifest.mfbundle-version写错了2.0.1XXX,版本号竟然比现在(V3.0.0XXX)的低,而在freatures指向的包的后缀时间没错(4.0.0XXX)。修改之后再次升级。问题不再出现。

 

具体原因不知,有知道的不吝赐教。

 

你可能感兴趣的:(eclipse在线升级引起的问题)