1

我得到了一些二进制形式的 OSGi 包,它们声明了对 Java 本身提供的“org.ietf.jgss”之类的包的依赖关系。P2 检测到这些依赖项,当我稍后尝试使用 P2 导向器应用程序安装产品时,安装失败,因为没有捆绑包提供这些包。但是,如果我使用 P2 产品构建,我会得到一个完整的安装产品,我可以使用它。

我的问题是我不想为应用程序的每个变体创建产品文件和构建。因此尝试了复制所有 P2 存储库的方法,以便使用 P2 控制器在目标系统上安装产品。

那么如何处理对 Java 提供的包的依赖关系,以及如何“说服”P2 忽略这些包(如果它们是由 Java 本身提供的)。

感谢您的帮助。

4

1 回答 1

1

Java 提供的包,或者更确切地说是 OSGi 所称的“执行环境”,根据定义在以 java.* 开头的包中,不需要显式导入语句。

如果您的虚拟机提供了不以 java.* 开头的附加包,您可以通过系统包使它们可用(因此框架使它们可用并且可以解决这些包的显式导入),或使用引导委托(这意味着这些包将神奇地可用,即使没有明确导入)。

我对你的第一句话有点困惑。如果一个bundle声明了对另一个bundle的依赖,那么这个bundle怎么能由Java自己提供,因为JVM不提供任何bundle呢?

于 2010-04-19T10:19:16.533 回答