4

我是 OSGi 标准的新手。我想更多地了解捆绑包文件的结构。

  1. 发现有这个OSGi-INF文件夹,规范中提到了l10n和权限,不知OSGI-INF文件夹的使用定义在哪里?我可以在里面放其他东西吗?
  2. 捆绑包引用的 jar 文件存储在哪里?
  3. 除了 OSGi-INF 和 OSGi-OPT 之外,还有 OSGi 标准定义的文件夹吗?
4

3 回答 3

3

您可能会查看 OSGi 核心规范。您可以从OSGi Alliances 网站下载它(它实际上非常易读)。例如,对于 4.2 版的规范,第 3.2 章详细讨论了捆绑包及其结构。正如另一个答案中已经提到的,捆绑包实际上是带有清单的普通 jar 文件,其中包含几个特殊的清单标头。

其中一些标头还允许您指定某些文件的位置,例如在第 3.2.1.11 节中定义了Bundle-Localization标头:

Bundle-Localization 标头包含在包中可以找到本地化文件的位置。默认值为 OSGI-INF/l10n/bundle。翻译默认是 OSGI-INF/l10n/bundle_de.properties、OSGI-INF/l10n/bundle_nl.properties 等

于 2009-12-08T00:58:06.267 回答
2

唯一必需的 OSGi 包元素是 META-INF/MANIFEST.MF 文件中特定于包的条目。

OSGi-INF 和 OSGi-OPT 都是可选的。

看看这个,了解什么是 OSGi 捆绑包的概述:http: //swik.net/Spring/Interface21+Team+Blog/Creating+OSGi+bundles/

这描述了 DS(声明式服务)如何使用 OSGi-INF 文件夹: http: //www.eclipsezone.com/eclipse/forums/t97690.html

于 2009-12-04T14:43:44.730 回答
0

OSGi bundle 与普通的 JAR 文件没有什么不同,除了 JAR 清单中的一些强制性条目,该META-INF/MANIFEST.MF文件(正如 James 已经指出的那样)。

所有其他文件和目录只是约定和最佳实践,例如文件夹META-INF/spring或分别META-INF/mavenSpringMaven使用。

一些 OSGi 服务定义了关于OSGI-INF目录使用的类似约定。据我所知,规范中没有一个地方列出了所有这些约定。您可以打开规格并搜索“OSGI-INF”以查找所有出现的情况 :-) 不要担心没有太多。

于 2009-12-05T12:39:17.627 回答