2012-03-20 221 views
1

我正在尝试安装并将外部程序包加载到简单的Equinox应用程序。使用Require-Bundle启动一个osgi包失败:org.eclipse.core.runtime; bundle-version =“0.0.0”

的目标束从一组插件的到来为这里提供日食:

http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/rodin-2.4-dev.zip)。

当我开始春分:

$ java -jar org.eclipse.osgi_3.7.1.R37x_v20110808-1106.jar -console 

我可以安装它

osgi> install file:///path_to/rodin-2.4-dev/org.eventb.core_2.4.0.r14093.jar 
Bundle id is 1 

但我有一个例外,当我启动它:

osgi> start 1 
org.osgi.framework.BundleException: The bundle "org.eventb.core_2.4.0.r14093 [1]" 
    could not be resolved. Reason: Missing Constraint: Require-Bundle: 
    org.eclipse.core.runtime; bundle-version="0.0.0" 

有谁知道如何解决这个错误?

也许它关系到一个事实,即包不包括org.eclipse.core.runtime版本,MANIFEST.MF有以下要求束:

Require-Bundle: org.eclipse.core.runtime,org.rodinp.core;visibility:=r 
    eexport,org.eventb.core.ast;visibility:=reexport,org.eventb.core.seqp 
    rover;visibility:=reexport 

回答

5

束具有运行时的核心,你的要求已经注意到。安装只是安装捆绑软件,并不意味着它是有效的。您可以通过diag命令检查捆绑包的状态,即osgi> diag 1

它需要处于状态解析状态才能运行。我敢打赌,它只是在为你安装状态。查询Dude, where's my bundle获取关于捆绑包及其状态的更多信息。

+1

关于是否是版本问题,在Require-Bundle中没有指定版本意味着任何版本的核心捆绑包都可以工作。错误信息中的“0.0.0”表示相同的事情;任何版本为0.0.0或更高版本的软件包(换句话说,任何版本)都可以实现。 – 2012-03-20 18:45:44

+0

我找到了解决方案:我期待着equinox的一些东西,但它清楚地表示'org.eclipse.core.runtime'是Eclipse的一部分,而不是Equinox。 – Kartoch 2012-03-20 21:03:21