在同一进程中加载​​多个共享库

时间:2012-12-12 15:20:49

标签: java gcc linker osgi ld

我正在运行一个OSGi应用程序,我有分别使用共享库S1和S2的B1和B2。 S1和S2有很多导出的冗余方法。我希望两个bundle只从它们各自的共享库中调用方法(所以B1使用S1而B2使用S2).On osx这就是行为。但在linux上,行为是不同的。两个osgi包都使用首先加载的sharedlib中的方法。我猜这是因为共享库是由同一个进程加载的。

如何确保每个捆绑包仅使用其各自共享库中的方法?

1 个答案:

答案 0 :(得分:1)

您需要在Manifest.MF中声明捆绑包的版本

插入S1清单文件

Bundle-Version: 1.0.0.S1

进入B1 Manifest

Import-Package: yourpackage;version="1.0.0.S1"

插入S2清单文件

Bundle-Version: 1.0.0.S2

进入B2 Manifest

Import-Package: yourpackage;version="1.0.0.S2"

这样只会使用S1中的类

相关问题