2010-08-12 76 views
1

我嘗試在OSGi環境(FUSE ESB)中安裝捆綁軟件,但未設法解決它。該錯誤信息是:包使用衝突:導入包:de.foo.bar;版本=「0.0.0」

The bundle could not be resolved. Reason: Package uses conflict: Import-Package: de.foo.bar; version="0.0.0" 

我的包導入包de.foo.bar。 導出包的包de.foo.bar通過'uses'指令來執行此操作。

Export-Package = de.foo.bar;uses:="{other packages}";version="2.4.0" 

當我明白我必須確保我的包必須導入在de.foo.bar包的「使用」指令中提到的所有其他包(在正確的版本)。

我檢查了這個,並嘗試了幾個版本的變化(0.0.0和真正的版本號),但無法讓它工作。

那麼,錯誤信息是否意味着什麼(也許我理解錯了)?我需要檢查什麼?

感謝所有幫助

克勞斯


系統信息:

+0

如果您只是從'Export-packages'聲明中刪除'uses'和'version'屬性,它會起作用嗎?據我記得,他們是可選的。 – 2010-08-12 09:56:59

+0

屬性是由maven-bundle-plugin添加的(即使我按名稱而不是通配符來指定包),我不知道如何避免這種情況。不過,我認爲,理解這些信息並配置正確的東西可能是值得的。 – FrVaBe 2010-08-12 10:17:36

回答

3

我終於發現有什麼問題了。

我的包是一個Spring動態模塊包,我在Spring bean配置中做了一個錯誤(在構造函數arg中使用'ref'代替'value')。通常彈簧配置錯誤是這樣報道的 - 我不知道爲什麼當前的錯誤會導致誤導消息。

編輯:

有故障的Spring配置不會導致使用衝突。它最終導入了包(org.apache.log4j),這是由不同的包(在我的FUSE ESB容器中)導出的,顯然與我試圖安裝的包不同。

試圖解決我的問題,我發現文章Diagnosing OSGi uses conflicts,我發現它有助於理解問題。