如何讀取僅包含JAR文件名的軟件包清單,但不安裝或激活它?如何在安裝前閱讀軟件包的清單?
我需要動態安裝包,但是當我嘗試安裝具有相同名稱和已安裝版本的捆綁包時,即使它們具有不同的源文件,也會產生問題。
如何讀取僅包含JAR文件名的軟件包清單,但不安裝或激活它?如何在安裝前閱讀軟件包的清單?
我需要動態安裝包,但是當我嘗試安裝具有相同名稱和已安裝版本的捆綁包時,即使它們具有不同的源文件,也會產生問題。
也許會創建JarFile並使用JarFile.getManifest讀取清單元素?
儘管沒有直接回答你的問題,但規範的版本4.3確實允許多個具有相同符號名稱和版本的軟件包安裝,只要org.osgi.framework.bsnversion
屬性設置爲multiple
即可。我沒有使用它的直接經驗,這只是我在閱讀規範時注意到的事情。
具體參見4.4.1節Bundle Identifiers。
我測試了它: FrameworkProperties.setProperty(「org.osgi.framework.bsnversion」,「multiple」); 它的工作。但是,有一個不鼓勵的訪問警告。我認爲這是因爲FrameworkProperties不應該在外部使用。有沒有一種乾淨的方式來做到這一點? – Allan
你如何啓動你的(Eclipse?)OSGi運行時?如果你使用'FrameworkFactory.newFramework()',這些屬性作爲'Map
我正在開發一個Eclipse插件。我認爲在這種情況下框架是自動定義的,對吧? 我使用BundleContext來管理安裝,並且我對與框架相關的任何內容的唯一參考是對FrameworkUtil.getBundle的調用。 – Allan
只是一個一般的評論:在開發過程中偶爾出現這種問題。然而,從部署的角度來看,這絕不應該發生。 bundle.version意味着bundle提供了完全相同的實現。 –