【问题标题】:Choosing what native library to load depending on system setup根据系统设置选择要加载的本机库
【发布时间】:2011-11-28 10:50:05
【问题描述】:

在我们的 OSGi 代码中,我们使用 Bundle-NativeCode 清单标头来选择要为 Windows 或 Linux 加载哪些本机库。

当我们需要使用的库之一依赖于已安装库的特定版本时,就会出现问题(GLIBC 目前在 Ubuntu 中为 2.12 版,在 Debian 中为 2.11 版)。有没有办法识别已安装的 Linux 风格,或者至少是具有 Bundle-NativeCode 属性的特定库的版本?你知道解决这个问题的任何其他方法吗? (请注意,osname 和 osversion 分别只给了我们“Linux”和 linux 内核版本,这还不够)

谢谢!

【问题讨论】:

    标签: java osgi


    【解决方案1】:

    不,OSGi 本机代码过滤不为外部源包提供该级别的依赖关系。除了尝试将特定版本的依赖项也包含在包中(这当然不适用于 glibc)之外,您无法仅通过 Native-Code 实现这一点。

    另一种方法是不使用本机代码,而是使用您的包来按需加载片段代码,方法是使用不同的名称。这样你就有了 Linux\Glibc\211 和 Linux\Glibc\212,然后根据你的 bundle 启动的运行时间,可以自己手动调用System.loadLibrary()

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2021-10-25
      • 2016-02-04
      • 2019-10-25
      相关资源
      最近更新 更多