我正在编写一个Eclipse插件,它必须读取XML文件以进行XSLT转换。 XML文件位于XSLT /目录中。我以这种方式得到了道路:
String fileXSL = "XSLT/file.xslt";
程序找不到该文件。也是这样,它不起作用:
this.getClass().getClassLoader().getResource("XSLT/file.xslt");
我在build.properties中插入了这个目录,但问题仍然存在。有什么想法吗?
答案 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。