繁体   English   中英

在osgi插件中引用本地文件夹

[英]Referencing a local folder in an osgi plugin

我想引用我的osgi插件的名称为“ test”的本地资源文件夹(而不是其中的文件)。 我发现这两个例子( 12 )在互联网上:

Bundle bundle = Platform.getBundle("de.vogella.example.readfile");
URL fileURL = bundle.getEntry("files/test.txt");
File file = null;
try {
    file = new File(FileLocator.resolve(fileURL).toURI());
} catch (URISyntaxException e1) {
    e1.printStackTrace();
} catch (IOException e1) {
    e1.printStackTrace();
}

这对我不起作用,因为没有解析FileLocator对象(eclipse建议不采取任何措施来解决此问题)。

第二个片段:

URL iconUrl = FileLocator.find(Platform.getBundle("myBundle"), new Path("icons/someIcon.png"))

这对我不起作用,因为Platfrom,FileLocator和Path对象已解决。

与上述两种方式相比,我可以使用哪种方式引用本地文件夹? 该文件夹位于根目录下一级(与用于存储jar文件的libs文件夹相同)。

捆绑软件中的资源不必位于文件系统上。 URL具有特殊的URL方案来反映这一点。 假定您可以通过任何方式将URL转换为文件,这是一种不好的做法。 可以将URL转换为InputStream ...这是您获得的唯一保证。

因此,您应该获取输入流并将其复制到一个临时文件中。 但是,通常在大多数情况下,您可以直接使用输入流。

但是,在OSGi中,可以遍历分发包中的文件夹。 查看Bundle.findEntries

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM