1

我正在使用 bndMANIFEST.MF为库生成。最后,我得到了一个带有以下冲突的清单:

Export-Package: A;uses:="B,C"
Import-Package: B 

A, B,C都驻留在单独的插件中,也称为A,BC. 在运行时,Eclipse 不加载 plugin C,所以我遇到了崩溃。此外,Eclipse 工具似乎只查看 . Import-Package,因为该工具也不知道对C.

是否应该Import-Package始终包含uses声明中的所有包?它是一个 Eclipse 错误,还是(更有可能)我对 bnd 做错了什么,导致它错过了对 C 的依赖?

4

1 回答 1

1

对于您的问题:

Import-Package 是否应该始终包含使用语句中的所有包?它是一个 Eclipse 错误,还是(更有可能)我对 bnd 做错了什么,导致它错过了对 C 的依赖?

答案是:没有

通过导入,您可以声明您的捆绑包需要哪些包,通过导出您可以声明您将哪些包提供给其他捆绑包。使用是对解析器的提示,即需要包 A 的导入包也需要导入包 B 和 C。这使得解析机制更容易找到合适的包。特别是因为导出 A 的包确实也需要导入 B 而不是 C。

澄清问题:

似乎 Import-package 应该包含使用中的所有内容,我试图理解它不会的场景。

Bundle A 是您的 bundle 并导出包 my.a.package 它使用来自 Bundle B 的包 their.b.package 并因此导入它。这是简单的东西。现在,由于您导出 my.a.package bnd 还为您分析 Bundle B。由于您没有明确使用 Bundle C 中的任何类,因此不会导入这些类。但是由于 bnd 为您分析了 Bundle B,它知道来自 Bundle C 的包被用作 B 中的传递依赖。

于 2015-01-15T07:28:51.420 回答