簡體   English   中英

獲取OSGi運行時中已安裝的包的InputStream?

[英]Get InputStream of bundle already installed in OSGi runtime?

我正在嘗試創建在運行時中安裝的捆綁軟件的備份文件,以便可以卸載它,然后根據需要從備份中重新安裝。 有人知道如何獲取運行時中已安裝的捆綁文件的位置嗎? 我想以一種與OSGi容器無關的方式來執行此操作(特別是,我希望它在Equinox和Felix中都能工作)。 理想地,這將是從獲得的信息Bundle對象(或從從所獲取的對象的信息Bundle對象)。

編輯:簡而言之,我正在安裝每個捆綁軟件( bundleContext.getBundles ),並從中嘗試確定捆綁軟件的文件路徑。

你做不到 OSGi規范不提供任何獲取已安裝包的輸入流的方法。 這主要是因為OSGi不需要捆綁軟件以JAR的形式出現,也不需要以任何存檔格式存儲它們。 例如,OSGi框架可以將束的條目存儲在數據庫中,然后從該數據庫中查找請求的類和資源。 因此,您無法確保安裝后捆綁軟件以JAR形式存在。

使用bundle.getLocation()。 它將返回捆綁軟件的安裝位置(如果有)。 無法保證您可以從那里加載捆綁包,但取決於最初安裝捆綁包的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM