java - 根据系统设置选择要加载的 native 库

标签 java osgi

在我们的 OSGi 代码中,我们使用 Bundle-NativeCode list header 来选择要为 Windows 或 Linux 加载的 native 库。

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

谢谢!

最佳答案

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

一种替代方法是不使用 native 代码,而是使用 bundle 通过使用不同的名称来按需加载片段代码。所以你有Linux\Glibc\211和Linux\Glibc\212,然后根据你的bundle启动的运行时,你可以自己手动调用System.loadLibrary()

关于java - 根据系统设置选择要加载的 native 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294710/

相关文章:

java - java应用程序强制关闭时调用方法

java - 在 for 循环中创建 JfreeCharts

java - 抽象类中的 getClass() 返回随机实现类

安卓felix开发

java - OSGi/BND : How to exclude classes from bundle generation?

java - Java如何将windows放到桌面上?

java - 借助 varag 和增强的 for 循环进行加法

java - JPA - @MapKey 和 @EmbeddedId

java - 如何在 Android 4.1 上运行 OSGi?

postgresql - OSGi + JPA(postgresql)