【问题标题】:what is the OSGi bundle package structure?OSGi 捆绑包结构是什么?
【发布时间】:2009-12-02 07:02:07
【问题描述】:

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

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

【问题讨论】:

    标签: localization jar osgi bundle


    【解决方案1】:

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

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

    Bundle-Localization 标头 包含捆绑包中的位置 在哪里可以找到本地化文件。 默认值为 OSGI-INF/l10n/包。翻译是 因此默认情况下 OSGI-INF/l10n/bundle_de.properties, OSGI-INF/l10n/bundle_nl.properties, 等等

    【讨论】:

      【解决方案2】:

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

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

      查看以下内容以了解构成 OSGi 捆绑包的原因: http://swik.net/Spring/Interface21+Team+Blog/Creating+OSGi+bundles/

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

      【讨论】:

        【解决方案3】:

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

        所有其他文件和目录只是约定和最佳实践,例如 SpringMaven 分别使用的文件夹 META-INF/springMETA-INF/maven

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-26
          • 2017-10-23
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 2012-06-26
          • 2015-08-13
          相关资源
          最近更新 更多