[英]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.