OSGi - 将bundle的类添加到特定的类加载器

时间:2014-08-07 09:26:02

标签: java groovy osgi

我在OSGi中安装了捆绑A.jar,我可以使用BundleContext获取此捆绑包

Bundle bundleA = context.getBundle()

和特定的类加载器B

如何将bundleA中的所有类添加到我的类加载器B

2 个答案:

答案 0 :(得分:1)

您无法在运行时执行此操作。您可以向bundle B添加一个Require-Bundle标头。然后bundle B的类加载器将知道bundle A的所有类。但实际上并不是这样。

所以我宁愿问你想用这个来实现什么目标?也许你的问题有另一个解决方案。

答案 1 :(得分:1)

让我假设您正在编写自己的类加载器,并希望使用Bundle A的类加载器作为其父级。您可以按如下方式获取Bundle A的类加载器:

ClassLoader clA = bundleA.adapt(BundleWiring.class).getClassLoader();

然后,您可以使用clA作为新ClassLoader实例的父级来加载依赖于A类的类。