【问题标题】:Read OSGI bundle version读取 OSGI 捆绑包版本
【发布时间】:2015-01-18 12:09:03
【问题描述】:

我对如何在部署之前使用 Java 读取 OSGI 捆绑 jar 文件版本感兴趣?有没有办法在部署之前提取这些数据?

【问题讨论】:

    标签: java osgi osgi-bundle karaf


    【解决方案1】:

    如果您只是想获得版本,这可能完全是矫枉过正,但一般来说,读取各种捆绑数据的一个非常好的方法是使用bnd。许多工具都是在 bnd 之上构建的,但它也很容易用作库。

    【讨论】:

      【解决方案2】:

      您可以使用标准 Java 做到这一点:

      JarFile jarFile = new JarFile("myjar.jar");
      Manifest manifest = jarFile.getManifest();
      Attributes mainAttributes = manifest.getMainAttributes();
      String bundleVersion = (String) mainAttributes.get(Constants.BUNDLE_VERSION);
      

      Constants 类来自 org.osgi.framework 包。

      【讨论】:

      • 你还有什么其他的想法?没有分析 JAR 文件的标准库。您可以直接调用 Felix 或 Equinox 的函数,但我认为它们在内部包中,因此您无法确定新版本中是否存在相同的函数。您还可以启动一个嵌入式 OSGi 容器,在那里部署 jar 文件并使用该容器来分析 JAR,但我认为这太疯狂了 :)。有一个名为 org.apache.felix.utils 的库来解析子句[] 表达式(如 Import-Package 或 Bundle-SymbolicName 标头的值)。
      猜你喜欢
      • 2020-07-29
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-21
      • 2018-09-29
      • 2012-06-26
      • 2015-08-13
      相关资源
      最近更新 更多