2016-04-22 37 views
0

我有一個OSGi設置與Apache Felix和大量的依賴關係。其中一種依賴關係(Apache CXF)對Spring中的包(org.springframework.context.support)具有可選的依賴關係。此依賴關係未得到解決(未在Felix Web UI的「導入的軟件包」中列出)。這會導致在我的應用程序中找不到類的異常。如何排除Apache Felix故障解決可選依賴項?

我認爲這是因爲我有一個典型的依賴地獄問題;春季包可能會導入一些東西,導入其他東西,這與某些東西(或CXF本身)的導入不可調和。現在,如果依賴關係是強制性的,Felix將顯示一個很好的錯誤概述,這些依賴關係鏈如何衝突,但是對於可選的依賴關係,它不會。

有沒有一種方法,我可以得到這些信息的可選依賴?

+0

作爲一個猴子補丁,我已經從CXF包中的包導入中刪除了'可選'修飾符。顯然維護修改後的CXF捆綁並不理想。 –

回答

0

正如您所建議的,當可選軟件包導入無法解析時,Felix不打印錯誤消息,因爲沒有錯誤...因爲它是可選的。

如果您知道將提供軟件包的軟件包的身份,請安裝並啓動該軟件包。這將強制顯示您想要診斷的錯誤消息。

順便說一下,它看起來像你正在處理設計不佳的捆綁。如果它有一個可選的導入,那麼它不應該爲該包中的類型拋出CNFE。它確實表示導入應該是強制性的,而不是可選的。