2

也许这是一个愚蠢的问题,但是测试 Java 存档(jar)文件是否是 OSGi 包的最佳方法是什么?也就是说,jar 完全兼容的最低要求是什么?仅仅是 META-INF/MANIFEST.MF 的存在吗(我不这么认为)?如果不是,该文件必须提供的最少字段是什么?

实际上,我应该如何测试 jar 是否是 OSGi jar?

4

2 回答 2

17

在 MANIFEST.MF 中查找Bundle-SymbolicName标题。这是 OSGi 包中唯一的强制性标头,至少从 OSGi 规范的 4.0 版开始。因此,如果Bundle-SymbolicName定义了标头,那么 JAR 就是一个 OSGi 包。如果不是,那么它只是一个 JAR。

于 2013-10-18T18:52:30.930 回答
1

捆绑包是一组 Java 类和附加资源,在其所有内容上配备了详细的清单 MANIFEST.MF 文件,以及为包含的 Java 类组提供更复杂的行为所需的附加服务,以认为整个聚合一个组件。


OSGi 规范将捆绑包描述为“模块化单元”,它“由 Java 类和其他资源组成,它们一起可以为最终用户提供功能。”。

bundle 是一个 JAR 文件,它:

   Contains [...] resources
   Contains a manifest file describing the contents of the JAR file and providing information about the bundle
   Can contain optional documentation in the OSGI-OPT directory of the JAR file or one of its sub-directories

简而言之,一个 bundle = jar + OSGI 信息(在 JAR 清单文件 - META-INF/MANIFEST.MF 中指定),不需要额外的文件或预定义的文件夹布局。

我想唯一需要的条件是有一组类,并且它包含一个包含有效 OSGi 标头的 MANIFEST.MF 文件。

考虑这个链接
以及这个

回答您的问题,这是测试捆绑包以检查 MANIFEST.MF 文件是否存在并包含有效标头的唯一方法。

于 2013-10-18T17:25:34.687 回答