2016-09-27 29 views
1

我有OSGI片段的一些誤解,怎麼做軟件包及其片段

想我已經部​​署了捆「B」兩班「com.company.C1」和「com之間重複上課的時候類加載器。 company.C2「,其中C1使用C2。 然後,我爲主機捆綁包「B」部署了一個碎片「F」,其中F僅包含一個類「com.company.C2」(在第一類的代碼中稍作修改)

現在,如果正在執行類「com.company.C1」,將使用哪個類(文件)「com.company.C2」,從「B」還是從「F」?

在相同的類加載器中出現同一類C2兩次是否會導致運行時錯誤(相同版本&不同版本)?

回答

5

閱讀章節「3.9.4整體搜索順序」 OSGi核心規範,一切都將清晰。

簡而言之:首先檢查包中的類,然後檢查片段包。如果您在包中和片段包中有一個類,那麼片段包中的那個永遠不會被使用。

+0

另請參見「3.9.1 Bundle Class Path」一節,其中顯示瞭如何在主機捆綁包中打開主機捆綁包中用於替換主機捆綁包中的類的「空間」的示例。 –