在Eclipse插件中读取静态文件

时间:2014-05-27 08:32:37

标签: java eclipse eclipse-plugin

我正在编写一个Eclipse插件,它必须读取XML文件以进行XSLT转换。 XML文件位于XSLT /目录中。我以这种方式得到了道路:

String fileXSL = "XSLT/file.xslt";

程序找不到该文件。也是这样,它不起作用:

this.getClass().getClassLoader().getResource("XSLT/file.xslt");

我在build.properties中插入了这个目录,但问题仍然存在。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

使用org.eclipse.core.runtime.FileLocator

首先得到你的Bundle:

Bundle bundle = Platform.getBundle("your plugin id");

Bundle也可以在传递给激活器BundleContext方法的start中使用。

然后您可以使用:

InputStream is = FileLocator.openStream(bundle, new Path("XSLT/file.xslt"), false);

URL eclipseURL = FileLocator.find(bundle, new Path("XSLT/file.xslt"), null);

URL fileURL = FileLocator.toFileURL(eclipseURL);

注意:来自FileLocator.find的URL可能使用内部Eclipse协议,因此需要通过FileLocator.toFileURL进行转换。这可能会导致插件jar在临时位置解压缩,以便“'文件”可以返回URL。