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

Java 在osgi插件中引用本地文件夹,java,eclipse,osgi,osgi-bundle,Java,Eclipse,Osgi,Osgi Bundle,我想引用一个本地资源文件夹(而不是其中的文件),名称为我的osgi插件的“test”。我在互联网上找到了以下两个例子(,): 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

我想引用一个本地资源文件夹(而不是其中的文件),名称为我的osgi插件的“test”。我在互联网上找到了以下两个例子(,):

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中,您可以遍历捆绑包中的文件夹。查看。

捆绑包中的资源不必位于文件系统上。URL有一个特殊的URL方案来反映这一点。假设您可以以任何方式将URL转换为文件是一种糟糕的做法。URL可以转换为InputStream。。。这是你得到的唯一保证

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


但是,在OSGi中,您可以遍历捆绑包中的文件夹。请看。

这些示例仅适用于Eclipse插件-这是一个Eclipse插件还是一个通用OSGi插件?我相信它是一个通用OSGi捆绑包,因为它有Activator.class。Eclipse插件可以有一个Activator。问题是,您是打算将其作为Eclipse插件运行,还是打算使用其他OSGi系统。我打算使用Equinox OSGi框架运行它。这些示例仅适用于Eclipse插件-这是Eclipse插件还是通用OSGi插件?我相信这是一个通用OSGi包,因为它有Activator.class.Eclipse插件可以有一个Activator。问题是你打算把它作为Eclipse插件运行,还是打算使用其他OSGi系统。我打算用Equinox OSGi框架运行它。