我有一个Vaadin应用程序,我正在尝试使用Maven + BND将其构建为一组OSGI捆绑软件。

我无法将捆绑软件部署到Apache Felix,因为某些依赖项无法解决。
Apache Felix抱怨找不到软件包“A”所需的软件包XYZ,尽管此软件包是在同一软件包中定义的!!

我查看了Maven + BND生成的MANIFEST.MF文件,发现该捆绑包中的软件包(XYZ)已添加到“导入”和“导出”部分。我了解为什么要“导出”,但是为什么要“导入”?为什么捆绑软件尝试导入自己的软件包?

我的清单文件

Manifest-Version: 1.0
Export-Package: myexample.admin;uses:="com.vaadin.ui,myexample.webshared,
 com.vaadin.terminal,myexample.mvc.view.impl,
 myexample.mvc.model,myexample.mvc.renderer.map.impl,
 myexample.mvc.renderer,myexample.mvc.model.impl,myexample.util"
Built-By: ask
Tool: Bnd-0.0.384
Bundle-Name: admin
Created-By: 1.6.0_21 (Sun Microsystems Inc.)
Bundle-Version: 0
Build-Jdk: 1.6.0_26
Bnd-LastModified: 1315674240833
Bundle-ManifestVersion: 2
Import-Package: myexample.admin;version="1.0",myexample.mvc.model,
 myexample.mvc.model.impl,myexample.mvc.renderer,
 myexample.mvc.renderer.map.impl,myexample.mvc.view.impl,
 myexample.util,myexample.webshared,com.vaadin.terminal,com.vaadin.ui
Bundle-SymbolicName: admin
Include-Resource: ..\classes
Originally-Created-By: Apache Maven Bundle Plugin

最佳答案

这是正确的行为。在OSGi核心规范的3.5.6节中进行了说明。

关于Felix尚未解决的错误,这必须与其他问题有关。请发布实际的错误消息。

10-05 23:46