使用java 11 , Eclipse, OSGi:
因此,我在java中有一個 "主 "模塊。基本上,可以認為是主應用程式模塊。我從這個模塊中動態地訪問一個OSGi實作。(現在是Apache felix,但我認為這真的不重要。)然后我可以通過這個主應用程式安裝/使用OSGi包,如果設定了適當的匯入/匯出,可以在包之間呼叫類。沒有問題。
我的應用程式模塊嵌入了 java.desktop 和 java.xml 模塊。因此,我安裝的所有捆綁程式都可以訪問這些模塊中的類(Swing、org.w3c.dom 等)--并且它可以正常作業。
現在,如果我想從一個新的捆綁包中訪問一個java模塊的代碼,例如java.sql,但我沒有將該模塊(java.sql)嵌入到我的主模塊中,怎么辦?那個新的捆綁包如何訪問java.sql的代碼呢?
基本上,每次我試圖呼叫一個沒有嵌入到主模塊中的模塊代碼時,我都會得到一個class-not-found錯誤。通過運行配置,我可以設定我的主模塊來嵌入這些模塊:java.desktop、java.xml、java.sql或任何其他模塊(通過模塊資訊檔案中的 "requirements "陳述句。我怎樣才能在運行期間從后來動態安裝的osgi包中訪問新的(非當前嵌入的)模塊?
是否有某種 bundle-config 可以在 bundle 中嵌入特定的 java 模塊,就像 module-info 中的 require 陳述句一樣?
我是否必須通過某種服務訪問來動態地呼叫這些新模塊?
非常感謝。
uj5u.com熱心網友回復:
看看OSGi Connect規范和Apache Felix Atomos專案,它實作了OSGi Connect。
OSGi Connect定義了JPMS模塊和OSGi包的混合環境的互動機制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/325360.html
標籤:
下一篇:創建一個奇數串列
