我是OSGi的新手,并创建了一个在Apache Felix OSGi容器中运行的OSGi包。 包中包含文件资源,我需要将其传递给方法java.io.File
。要实例化File对象,“文件” - 方案中的URI或字符串路径是必需的。我如何以干净的方式检索这些内容?如何访问OSGi包内的文件?
我尝试使用 context.getBundle().getResource("/myfile")
(其中上下文类型为org.osgi.framework.BundleContext
),它返回URI bundle://6.0:0/myfile
。 但是由于该URI具有“bundle”方案,因此无法使用File(URI uri)
构造函数将其转换为File-instance。
可以尝试构建知道工作目录并利用bundle的bundleId的路径,但我怀疑这是最佳实践。
任何想法?
春分具有特殊的实用工具类,在面向未来的方式做这样的转换,但我不知道费利克斯。如果您想要使用干净的OSGi API进行编码,则需要将该文件复制到某处,以便轻松检索相应的File对象(例如,在您的Bundle.getDataFile()存储中)。 –