OSGI捆绑.bnd文件和冲突的import-package语句

时间:2012-07-10 22:10:19

标签: java import osgi bundle bnd

我继承了一个带有import!javax。的.bnd文件,如果我拿出那个语句,我的程序会产生运行时错误。我目前需要将JavaHelp添加到我的应用程序中,该应用程序位于javax.help。下。当我在.bnd中同时拥有这两个导入并使用JavaHelp中的类时,它会为特定类生成ClassNotFoundException,例如javax.help.JHelp。有没有办法处理这种情况,我感到困惑。

1 个答案:

答案 0 :(得分:5)

Bundles通常需要导入所有不以“java。”开头的包。这包括“javax”。包。如果您的bnd文件显式不导入javax。包,然后它必须依赖于框架的非标准引导委托配置。也就是说,引导委派提供对javax的“免费”访问。来自bundle父类加载器的包(可能是bootclassloader)。所以当你删除!javax。从bnd文件开始,你的包开始从某个提供者导入这些包,这些包可能与bootdelegation提供的包不同。