BundleContext
的文档说它可以让你
但是,没有getBundle(String symbolicName)
方法,只有getBundle(long id)
(和不合适的getBundle(String location)
。当然,可以调用getBundles()
并迭代返回的数组,但有更好的方法吗?
答案 0 :(得分:7)
我认为迭代getBundles()
数组很好。也许它根本不存在,因为符号名称不能唯一地标识一个包。也许getBundles(String symbolicName)
...
来自OSGi服务平台核心规范,第4版,版本4.3:
3.6.2 Bundle-SymbolicName
Bundle-SymbolicName
清单标头是必填标头。该 捆绑包符号名称和捆绑包版本标识唯一捆绑包。这个 并不总是暗示这对在框架中是独一无二的 在某些情况下,同一个捆绑包可以多次安装在 相同的框架,请参阅第89页的分发标识符。
推荐的第89页(实际上是第95页):
4.4.1捆绑标识符
[...]
尽管该对是唯一的,但可以安装相同的捆绑包 多次
org.osgi.framework.bsnversion
框架 启动属性设置为多个。
答案 1 :(得分:2)
我从未见过如何做到这一点的例子。但是有PackageAdmin
服务,也许你想看看这个,但它似乎已被弃用了。替换包org.osgi.framework.wiring
似乎没有提供这样的方法。
并澄清:你有一个Bundle实例的目的是什么?