【发布时间】:2012-07-31 03:36:55
【问题描述】:
我目前正在努力为我们的 OSGi 捆绑包提供一些对 OSGi 非常不友好的第 3 方库。其中一个库(我已经使用 bnd 将其变成了一个包)设法加载它不应该加载的类(至少通过 OSGi 规则)。让我们假设 bundle 被称为Foo,它加载类的包被称为bar。
Foo 具有 bar 作为可选导入。不过这无关紧要,因为没有导出 bar 的包。我没有使用任何引导委托。包含bar 的jar 文件位于应用程序类路径中(OSGi 框架嵌入在我的应用程序中运行)。
显然Foo 以某种方式绕过了 OSGi 类加载基础架构。如何才能做到这一点?我很确定它不使用自定义类加载器,因为它没有理由拥有一个(没有功能Foo 提供需要这样的东西)。那么,bundle 可以使用哪些标准的、开箱即用的方法来绕过 OSGi 类加载?
【问题讨论】:
-
抱歉跑题了,我正在为将 Felix 嵌入到我的应用程序中的非常相似的任务而“挣扎”,(实际上仍然有悬而未决的问题stackoverflow.com/questions/9822616/…),这不是很无礼的问题您共享代码如何嵌入(实际上是初始化 Felix)OSGi。先感谢您。您可以向我发送信息,甚至可以对 mvoronoy_at_gmail_com 做出负面回应
-
我在 Pax Exam 测试中遇到了这些问题,所以我没有自己进行嵌入。我知道 Pax Exam 使用 Pax Runner,它应该更容易嵌入框架。不过我自己从来没有做过,所以我无法提供任何帮助。
标签: java osgi classloader