2012-04-18 63 views
3

我正在開發一個需要org.apache.http包的osgi bundle。目標平臺有一個httpcommponents軟件包,它有這些軟件包,因爲我在軟件包的清單中聲明瞭這些依賴關係時看到它們,eclipse自動將該軟件包添加到插件依賴項列表中。問題是當我import org.apache.http時出現編譯錯誤。如果我探索bundle,它只包含org.apache.http包中的Activator,並且在lib文件夾中包含我需要的包的jar包。我怎樣才能訪問這些軟件包?啓動激活器並在運行時獲得我需要的類?解決方案可以是手動將org.apache.http jar添加到我的包的構建路徑。很抱歉,如果這是一個愚蠢的問題...訪問osgi bundle的lib jar

感謝

回答

1

你可能想看看this question,關於你的構建問題。誰建立你的目標平臺正在採取錯誤的方法,這是什麼導致你的悲傷。

您的目標平臺實際上應該使用OSGi versions of the commons libraries。如果OSGi就緒版本不可用,則可以從Springsource bundle repository獲取它們。

如果這不是可能性(解決此問題),那麼您可以簡單地更改您的構建的類路徑以包含適當的庫。它應該已經在運行時工作,無論。

PS - 這不是一個愚蠢的問題;-)

+0

感謝您的有用信息。最後,我找到了需要使用org.apache.http包的庫的完整jar包。該jar包含庫所需的所有依賴項,所以我將它包含在我的項目中。 – 2012-04-20 17:02:47

0

你基本上需要確保你的OSGi容器,當您試圖啓動您的包運行org.apache.http束。有幾種方法可以做到這一點。您可以手動將jar複製到您的deploy目錄中,或者您可以使用類似OSGi Bundle Repository (OBR)的東西。通過OBR,當你安裝一個bundle時,它的所有依賴關係也會被下載和安裝。

您可以使用maven OSGi plugin承載您自己的OBR。這將讀取你的包的清單文件並創建一個包含該信息的本地OBR。然後,您可以使用控制檯中的OBR來安裝捆綁軟件包,以及它的所有依賴項。

+0

這是一個有點混亂,因爲我看到的關係是不列表中,但在我的課的導入代碼包被突出顯示爲錯誤。這個包被包含,因爲我上面描述的是在我的包被啓動時運行的,因爲我已經勾選了它。即使代碼有錯誤,代碼也會運行,但當它嘗試執行帶錯誤的行(不在導入行中)時會引發NoClassDefException。 – 2012-04-18 18:30:47