我是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()存儲中)。 –