2012-07-10 40 views
1

我繼承了一個帶有!!javax的.bnd文件。 ,如果我拿出這個語句,我的程序就會產生運行時錯誤。我目前需要將JavaHelp添加到我的應用程序中,該應用程序位於javax.help下。。當我在.bnd中同時使用這兩種導入並且使用JavaHelp中的類時,它會爲特定的類生成ClassNotFoundException,如javax.help.JHelp。有辦法處理這種情況,我感覺卡住了。OSGI bundle .bnd文件和衝突的導入包語句

+0

從import-package中刪除'!javax。*',因爲這只是錯誤的(因爲BJ基本上在他的回答中說過)。如果失敗,則發佈更多關於失敗的詳細信息:即完整的錯誤消息等。 – 2012-07-11 09:25:13

回答

5

軟件包通常需要導入所有不以「java。」開頭的軟件包。這包括「javax」。包。如果你的bnd文件顯式不導入javax。包,那麼它必須依賴框架的非標準啓動委派配置。也就是說,啓動委託提供對javax的「免費」訪問。軟件包父類加載器(可能是bootclassloader)中的軟件包。所以當你刪除!javax。從bnd文件中,你的包開始從某個提供者中導入這些包,這可能與bootdelegation提供的不一樣。

相關問題