我得到了一些二进制形式的OSGi包,它声明了对像Java本身提供的“org.ietf.jgss”这样的包的依赖。 P2检测到这些依赖关系,当我稍后尝试使用P2 director应用程序安装产品时,安装失败,因为没有bundle提供这些包。但是,如果我使用P2产品构建,我将获得一个可以使用的完整安装产品。
我的问题是我不想为应用程序的每个变体创建产品文件和构建。因此尝试复制所有P2存储库的方法,以便使用P2控制器在目标系统上安装产品。
那么如何处理Java提供的包的依赖关系以及如何“说服”P2忽略这些包,如果它们是由Java本身提供的。
感谢您的帮助。
答案 0 :(得分:1)
Java提供的软件包,或者更确切地说是OSGi调用它的“执行环境”,定义在一个以java。*开头的软件包中,并且不需要显式的import语句。
如果您的虚拟机提供了不以java。*开头的其他软件包,您可以通过系统软件包使它们可用(因此框架使它们可用并且可以解析这些软件包的显式导入),或者使用引导委派(这意味着即使没有明确导入,这些包也会神奇地可用)。
我的第一句话让我有点困惑。如果bundle声明了对另一个bundle的依赖,那么这个bundle如何由Java本身提供,因为JVM不提供任何bundle?