gpt4 book ai didi

java - 为什么看起来 OSGi 类加载被绕过了?

转载 作者:行者123 更新时间:2023-11-30 09:34:30 24 4
gpt4 key购买 nike

我目前正致力于为我们的 OSGi bundle 提供一些对 OSGi 非常不友好的第 3 方库。其中一个库(我已经使用 bnd 将其变成了一个包)设法加载它不应该加载的类(至少根据 OSGi 规则)。假设 bundle 名为 Foo,它从中加载类的包名为 bar

Foobar 作为可选导入。不过这应该无关紧要,因为没有导出 bar 的包。我没有使用任何引导委托(delegate)。包含 barjar 文件位于应用程序类路径中(OSGi 框架在我的应用程序中嵌入运行)。

显然 Foo 以某种方式绕过了 OSGi 类加载基础结构。如何才能做到这一点?我很确定它不使用自定义类加载器,因为它没有理由使用自定义类加载器(Foo 提供的功能都不需要这样的东西)。那么,bundle 可以使用哪些标准的开箱即用方法来绕过 OSGi 类加载?

最佳答案

您使用的是什么 OSGi 框架?您是否有命令提示符命令或其他方式来请求有关包的详细信息? OSGi 规范允许您进行详细调查,并且大多数框架都为 OSGi PackageAdmin 和其他 API 提供匹配的命令/接口(interface)。

其他 OSGi 框架会发生这种情况吗?

如果您使用 ProSyst's mBedded Server作为 OSGi 框架,您可以使用命令发现谁从哪里加载了什么

pkginfo [<package>[ <package>]] - Shows the dependencies of the specified package(s). If there are no parameters, you receive information about all packages available in the framework.

关于java - 为什么看起来 OSGi 类加载被绕过了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11772825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com