我是 OSGi 的新手,并且正在使用 Equinox。我已经进行了几次搜索,但找不到任何答案。OSGI上的讨论- 处理捆绑包所需的 3rd 方 JAR 在一定程度上有所帮助,但并没有完全回答我的问题。
我已经获得了一个 jar 文件,rabbitmq-client.jar
它已经打包为 OSGi 包(在其 MANIFEST.MF 中具有 Bundle-Name 和其他此类属性),我想将其安装为包。这个 jar 导入包org.apache.commons.io
和org.apache.commons.io.input
从commons-io-1.2.jar
. RabbitMQ 客户端 2.7.1 发行版还包括commons-cli-1.1.jar
,所以我认为它也是必需的。
我检查了这些公用 jar 的清单,发现它们似乎没有打包为捆绑包。也就是说,它们的清单没有任何标准捆绑属性。
我的具体问题是:如果我rabbitmq-client.jar
作为一个包安装,那么访问需要从公共 jar 导入的包的正确方法是什么?我只能想到三个替代方案,而无需重新构建rabbitmq-client.jar
.
- 来自公共 jar 的包已经包含在 Equinox 全局类路径中,并且
rabbitmq-client.jar
会从那里自动获取它们。 - 我必须用两个公共 jar 制作另一个包,导出所需的包,然后在 Equinox 中安装该包。
- 当我启动 Equinox 时,我必须将这两个公共 jars 放在全局类路径中,它们将从那里可用
rabbitmq-client.jar
。
我读过一个通常不使用 OSGi 容器中的全局类路径。我不清楚全局类路径中的项目在构建单个捆绑类路径时是否可用。但是,我注意到rabbitmq-client.jar
它还导入了其他包,例如javax.net
我认为来自全局类路径的包。还是有其他一些捆绑包可以导出它们?
感谢您的帮助!