![](/img/trans.png)
[英]How to filter OSGi Bundles in Plugin folder with Apache Felix
[英]Referencing a local folder in an osgi plugin
我想引用我的osgi插件的名称为“ test”的本地资源文件夹(而不是其中的文件)。 我发现这两个例子( 1 , 2 )在互联网上:
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.