从压缩更新站点安装功能时引发IllegalStateException

时间:2011-10-20 11:43:03

标签: eclipse eclipse-rcp p2

我正在尝试从命令行从压缩更新站点安装Eclipse功能。为此,我使用以下命令:

eclipsec.exe -nosplash -application org.eclipse.equinox.p2.director -repository jar:file:///d:\Eclipse_Workspaces\update-site-dummy_workspace\com.experiment.updatesite\experiment_update_site_1.0.0.zip!/ -installIU com.experiment.feature.one.feature.group -profile PlatformProfile

它可以正常工作,但是在安装过程结束之前,会出现类似这样的异常:

Installing com.experiment.feature.one.feature.group 1.0.0.
java.lang.IllegalStateException: Workbench has not been created yet.
        at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92)
        at org.eclipse.equinox.internal.provisional.p2.ui.ProvisioningOperationRunner.requestRestart(ProvisioningOperationRunner.java:171)
        at org.eclipse.equinox.internal.p2.ui.ProvUIActivator$1.notify(ProvUIActivator.java:117)
        at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.dispatchEvent(ProvisioningEventBus.java:108)
        at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
        at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)
        at org.eclipse.equinox.internal.p2.core.ProvisioningEventBus.publishEvent(ProvisioningEventBus.java:85)
        at org.eclipse.equinox.internal.p2.engine.SimpleProfileRegistry.broadcastChangeEvent(SimpleProfileRegistry.java:350)
        ....
Operation completed in 1277 ms.

已安装所请求的功能,但我对此异常感到不满 - 尤其是在某人的计算机上看起来不太好;)

Here我找到了有关此例外的一些信息: “java.lang.IllegalStateException:尚未创建Workbench

当有人试图使用java -classpath ....对OSGi包运行Java应用程序时,通常会出现这种情况。这实际上意味着工作台插件尚未启动,因此对getWorkbench()的调用失败。这本质上是一种竞争条件,可以通过表达对该捆绑包的显式依赖关系或将该捆绑包提升到比工作台更高的启动级别来解决。一般不会看到,但如果是,那就是正在发生的事情。 “

我的问题是:是否有人知道如何解决此异常?(例如,通过向安装命令添加一些vm选项)

PS我正在使用Eclipse 3.4,没有办法将它升级到更新的东西。

2 个答案:

答案 0 :(得分:1)

它是由您的环境中的 org.eclipse.equinox.p2.ui 包引起的。默认情况下,您不启动Workbench,因此该捆绑包应在OSGi运行时中处于已解决状态。我不确定为什么在您的环境中启动此捆绑包,您可以检查文件 configuration / org.eclipse.equinox.simpleconfigurator / bundle.info ,将捆绑包标记为不是自动启动。

答案 1 :(得分:0)

今天我一直在努力解决这个问题,最后我找到了解决方案。 install命令中缺少-destination参数,所以正确的是:

eclipsec.exe -nosplash -application org.eclipse.equinox.p2.director -repository jar:file:///d:\Eclipse_Workspaces\update-site-dummy_workspace\com.experiment.updatesite\experiment_update_site_1.0.0.zip!/ -installIU com.experiment.feature.one.feature.group -profile PlatformProfile -destination .