0

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

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

4

1 回答 1

1

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

插入 S1 清单文件

Bundle-Version: 1.0.0.S1

并进入 B1 清单

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

插入 S2 清单文件

Bundle-Version: 1.0.0.S2

并进入 B2 清单

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

这样将只使用 S1 中的包和类

于 2012-12-12T15:48:28.867 回答