在felix中加载bundle因依赖自身而失败

时间:2015-06-24 19:05:54

标签: osgi apache-karaf osgi-bundle karaf

我在这里显然很蠢,但我看不出问题:

我正在尝试在Karaf 4 M3中加载一个捆绑包,我得到的错误就是这个

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)]

My Manifest由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

所以看来它失败了,因为它取决于它自己?显然这是错的,那么我哪里搞砸了?

1 个答案:

答案 0 :(得分:0)

你的问题是这个:

Import-Package: ... bi.meteorite.internal

导入一个未导出的包,并且您实际声明为私有包:

Private-Package: bi.package.internal.*

除非真的需要,否则通常最好不要导入导出的包。 如果您导出的嵌入式依赖项可能会被更新版本替换为独立的,那么这只是use-full。