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

smu*_*kes 1 java import osgi bundle bnd

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

BJ *_*ave 5

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