Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在运行一个 OSGi 应用程序,并且我有分别使用共享库 S1 和 S2 的包 B1 和 B2。S1 和 S2 有相当多的导出冗余方法。我希望这两个包只从它们各自的共享库中调用方法(所以 B1 使用 S1,B2 使用 S2)。在 osx 上,这是行为。但是在linux上,行为是不同的。两个 osgi 包都使用首先加载的共享库中的方法。我猜这是因为共享库是由同一个进程加载的。
如何确保每个包仅使用其各自共享库中的方法?
您需要在 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 中的包和类