2012-04-21 60 views
2

提問here的問題顯示瞭如何通過URL引用包中的文件,例如platform:/plugin/de.vogella.rcp.plugin.filereader/files/test.txt從特定版本的包中檢索文件

我想同時運行同一個bundle的兩個版本,並且我檢索的文件在不同的版本中會有所不同。是否可以使用版本信息引用具有上述URL方案的軟件包,以便我可以獲得該文件的正確版本?

如果這是不可能的,是否可以通過其他方式檢索特定版本的包?

回答

2

您有幾個選項。將版本附加到插件名稱,用下劃線分隔,應該可以工作,但我現在無法嘗試它來確認該表單是否適用於平臺URL處理程序。例如:platform://my.bundle_3.1/some/file.txt

如果不成功,您可以直接使用OSGi API。如果您有BundleContext,則可以使用它查找所需的確切捆綁包,然後致電bundle.getResource()以獲取所需的資源。

0

不可能同時運行同一捆綁包的兩個版本。 OSGi啓動時有一個叫做bundle bundle的進程,它將從所有可用的bundle中選擇一個版本的bundle,以便最好地滿足其所有的依賴。如果你真的需要兩個版本,你需要通過將版本號推入捆綁ID來僞裝,在這一點上它將清楚如何區分它們。

+2

OSGi框架可以運行同一捆綁包的多個版本,儘管單個捆綁包通常只能連接到捆綁依賴關係的一個版本。 – 2012-04-21 14:51:08

+0

的確如此,這更準確。每個依賴者只觀察一個版本,但不同的依賴者確實可以觀察到不同的版本。 – 2012-04-21 16:05:23

+0

捆綁包導出包和包是有線的實體。可以使用相同的符號名稱和相同(自上一版本以來)版本或不同版本安裝任意數量的捆綁軟件。 – 2012-04-23 06:56:17

1

看看BundleTracker,這使得跟蹤捆綁無論版本如何都是微不足道的。一般來說,最好不要查看捆綁軟件的名稱或版本,而要對它們包含的資源做出反應。也就是說,搜索OSGi擴展模式。

相關問題