Java 如何一次安装和启动osgi捆绑包,其中一个依赖于另一个
我有两个包,比如A和B。A依赖于B(在A的清单中指定为必需的包:B) 现在我一个接一个地安装了A、B两个bundle(通过调用BundleContext.installBundle)。然后,当我尝试启动bundle A时,我得到以下错误Java 如何一次安装和启动osgi捆绑包,其中一个依赖于另一个,java,osgi,osgi-bundle,peaberry,Java,Osgi,Osgi Bundle,Peaberry,我有两个包,比如A和B。A依赖于B(在A的清单中指定为必需的包:B) 现在我一个接一个地安装了A、B两个bundle(通过调用BundleContext.installBundle)。然后,当我尝试启动bundle A时,我得到以下错误 org.osgi.framework.BundleException: Could not resolve module: A [140] Unresolved requirement: Require-Bundle: B; bundle-version="
org.osgi.framework.BundleException: Could not resolve module: A [140]
Unresolved requirement: Require-Bundle: B; bundle-version="1.0.0"
我从例外情况中了解到,捆绑包B尚未启动(解决)。现在如何解决这个问题呢
解决此问题的唯一方法是按依赖项对捆绑包进行排序?
或
是否有任何选项,例如为OSGi运行时指定文件夹,以便激活复制到其中的任何捆绑文件
顺便说一下,我使用的是equinox。请确保在启动任何捆绑包之前安装所有捆绑包。即,您需要这样做:
[顺便说一句,在你的问题中,你似乎把开始和解决混淆了:你说“B尚未启动(已解决)”。这完全是两码事。B只需要在启动A之前安装,OSGi会在需要时自动解决。]确保在启动任何捆绑包之前安装所有捆绑包。即,您需要这样做:
[顺便说一句,在你的问题中,你似乎把开始和解决混淆了:你说“B尚未启动(已解决)”。这完全是两码事。B只需要在启动A之前安装,OSGi会在需要时自动解决它。@AdamArold没问题!谢谢@NeilBartlett@AdamArold没问题!谢谢@NeilBartlettIt听起来像是当你启动Bundle A时Bundle B还没有安装?框架在安装后会自动尝试解析B,您不必启动它。当您启动捆绑包A时,听起来好像捆绑包B还没有安装?框架安装后会自动尝试解析B,您不必启动它。