Osgi 在felix中加载捆绑包失败,因为它依赖于自身

Osgi 在felix中加载捆绑包失败,因为它依赖于自身,osgi,apache-karaf,osgi-bundle,karaf,Osgi,Apache Karaf,Osgi Bundle,Karaf,我在这里显然是个傻瓜,但我看不出问题所在: 我试图加载一个4立方米的捆绑包,我得到的错误是 org.osgi.framework.BundleException: Unable to resolve package-core [50](R 50.0): missing requirement [package-core [50](R 50.0)] osgi.wiring.package; (osgi.wiring.package=bi.package.internal) Unresolved r

我在这里显然是个傻瓜,但我看不出问题所在:

我试图加载一个4立方米的捆绑包,我得到的错误是

org.osgi.framework.BundleException: Unable to resolve package-core [50](R 50.0): missing requirement [package-core [50](R 50.0)] osgi.wiring.package; (osgi.wiring.package=bi.package.internal) Unresolved requirements: [[package-core [50](R 50.0)] osgi.wiring.package; (osgi.wiring.package=bi.package.internal)]
我的清单由Maven生成,如下所示:

Manifest-Version: 1.0
Export-Package: bi.package.core.repository;uses:="bi.package.core.repository.objects";version="4.0.0.SNAPSHOT",bi.package.core.repository.objects;version="4.0.0.SNAPSHOT"
Private-Package: bi.package.internal.*
Built-By: bugg
Tool: Bnd-0.0.255
Bundle-Name: package-core
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.7.0_65
Bundle-Version: 4.0.0.SNAPSHOT
Bnd-LastModified: 1435161944129
Bundle-ManifestVersion: 2
Bundle-Activator: bi.package.internal.ExampleActivator
Import-Package: bi.package.core.repository;version="4.0.0.SNAPSHOT",bi.package.core.repository.objects;version="4.0.0.SNAPSHOT",bi.meteorite.internal
Bundle-SymbolicName: package-core

那么,它之所以失败,是因为它依赖于自身?显然这是错误的,那么我把事情搞砸了吗?

你的问题是:

Import-Package: ... bi.meteorite.internal
您导入了一个未导出且实际声明为私有的包:

Private-Package: bi.package.internal.*
除非真的需要,通常最好不要导入导出的包。
只有当您导出一个嵌入的依赖项,而该依赖项可能会被一个新版本替换为独立版本时,这才是“完全使用”

有趣。谢谢Achim,我读了一些书,说重新导入你自己导出的包是一个很好的设计,也许我读错了,导入行是由maven生成的,所以天知道为什么它要导入一个私有包。我来看看!