根据系统设置选择要加载的本机库

时间:2011-11-28 10:50:05

标签: java osgi

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

不,OSGi本机代码过滤不会为外部源包提供该级别的依赖性。除了尝试在捆绑包中包含特定版本的依赖项(当然不适用于glibc)之外,您无法单独通过Native-Code实现此目的。

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