2011-07-11 33 views
1

如何讀取僅包含JAR文件名的軟件包清單,但不安裝或激活它?如何在安裝前閱讀軟件包的清單?

我需要動態安裝包,但是當我嘗試安裝具有相同名稱和已安裝版本的捆綁包時,即使它們具有不同的源文件,也會產生問題。

+0

只是一個一般的評論:在開發過程中偶爾出現這種問題。然而,從部署的角度來看,這絕不應該發生。 bundle.version意味着bundle提供了完全相同的實現。 –

回答

2

也許會創建JarFile並使用JarFile.getManifest讀取清單元素?

+1

我不知道有這麼簡單的方法來讀取清單文件。謝謝,它工作! 我實際上使用了getManifest方法和屬性。 – Allan

+0

對。我從記憶中寫下了它。我更新了帖子。 – zacheusz

1

儘管沒有直接回答你的問題,但規範的版本4.3確實允許多個具有相同符號名稱和版本的軟件包安裝,只要org.osgi.framework.bsnversion屬性設置爲multiple即可。我沒有使用它的直接經驗,這只是我在閱讀規範時注意到的事情。

具體參見4.4.1節Bundle Identifiers。

+0

我測試了它: FrameworkProperties.setProperty(「org.osgi.framework.bsnversion」,「multiple」); 它的工作。但是,有一個不鼓勵的訪問警告。我認爲這是因爲FrameworkProperties不應該在外部使用。有沒有一種乾淨的方式來做到這一點? – Allan

+0

你如何啓動你的(Eclipse?)OSGi運行時?如果你使用'FrameworkFactory.newFramework()',這些屬性作爲'Map '被傳入。 –

+0

我正在開發一個Eclipse插件。我認爲在這種情況下框架是自動定義的,對吧? 我使用BundleContext來管理安裝,並且我對與框架相關的任何內容的唯一參考是對FrameworkUtil.getBundle的調用。 – Allan