gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:03:52 24 4
gpt4 key购买 nike

我想引用我的 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 对象未解析。

与上述两种方法相比,是否有其他方法可以引用本地文件夹?该文件夹位于 root 下一级(与存储 jar 文件的 libs 文件夹相同)。

最佳答案

bundle 中的资源不必位于文件系统上。 URL 有一个特殊的 URL 方案来反射(reflect)这一点。假设您可以以任何方式将 URL 转换为文件都是不好的做法。 URL 可以转换为 InputStream ...这是您获得的唯一保证。

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

但是,在 OSGi 中,您可以遍历 bundle 内的文件夹。看Bundle.findEntries .

关于java - 在 osgi 插件中引用本地文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com