【发布时间】:2011-12-05 22:30:50
【问题描述】:
我对 OSGi 很陌生。
我正在开发一个插件 A(osgi 包),假设 A 依赖于库,假设 B-1.0 和 C-1.0 .现在如果库 C-1.0 依赖于库 B-2.0(注意:库 B 的不同版本)。所以我的插件在其类路径中有两个不同版本的库 B。现在,我该如何处理这种情况?
正如我从过去 4-5 天开始研究 OSGi 一样,它为 JIRA 应用程序中的每个插件创建了一个类加载器,因此插件之间不会发生依赖版本不匹配的情况。但是如果一个插件本身需要两个不同版本的库 jar,开发者会怎么做呢?
我可以通过 OSGi 在一个 osgi 包中创建两个不同的类加载器,比如一个用于包 X,另一个用于包 Y?
请在上述任何情况下帮助我或指出正确的方向。
提前致谢。
【问题讨论】:
-
感谢大家的解决方案,非常抱歉我迟到的回复,但您提供的解决方案假定这些都是 OSGi 捆绑包。好的,让我重新表述我的问题,我的问题是我只有一个 OSGi 包 Plugin A 并且所有其他都是简单的库,而不是 OSGi 包。单个 OSGi 包如何将库 B-1.0 用于其包之一,例如 com.example.foo 并使用库 B-2.0 用于另一个包说 com.example.bar。 (这就是为什么我要在一个 OSGi 包中创建两个不同的类加载器。)
标签: osgi classloader