我正在运行一个OSGi应用程序,我有分别使用共享库S1和S2的B1和B2。 S1和S2有很多导出的冗余方法。我希望两个bundle只从它们各自的共享库中调用方法(所以B1使用S1而B2使用S2).On osx这就是行为。但在linux上,行为是不同的。两个osgi包都使用首先加载的sharedlib中的方法。我猜这是因为共享库是由同一个进程加载的。
如何确保每个捆绑包仅使用其各自共享库中的方法?
答案 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中的类