从具有特定版本的包中检索文件

时间:2012-04-21 12:49:40

标签: java osgi

问题here显示了如何通过platform:/plugin/de.vogella.rcp.plugin.filereader/files/test.txt等网址引用捆绑包中的文件。

我想同时运行同一个捆绑包的两个版本,我检索的文件在不同版本中会有所不同。是否可以使用版本信息引用具有上述URL方案的包,以便我可以获得该文件的正确版本?

如果无法做到这一点,是否可以通过其他方式检索特定版本的捆绑包?

3 个答案:

答案 0 :(得分:2)

您有几个选择。将版本附加到插件名称(由下划线分隔)应该可以使用,但我现在无法尝试确认该表单适用于平台URL处理程序。例如:platform://my.bundle_3.1/some/file.txt

如果失败,您可以直接使用OSGi API。如果您有BundleContext,则可以使用它来查找所需的确切包,然后调用bundle.getResource()以获取所需的资源。

答案 1 :(得分:1)

查看BundleTracker,无论版本如何,都可以轻松跟踪捆绑包。通常,最好不要查看捆绑包的名称或版本,而是对它们包含的资源做出反应。也就是说,搜索OSGi扩展器模式。

答案 2 :(得分:0)

无法同时运行同一捆绑包的两个版本。 OSGi创业公司有一个名为捆绑解决方案的流程,它将从所有可用的捆绑包中选择捆绑包的单个版本,以便最好地满足其所有家属。如果你真的需要两个版本,你需要通过将版本号推送到包ID来某种方式伪造它,此时将清楚如何区分它们。