【问题标题】:Read static file in a Eclipse plugin [duplicate]在 Eclipse 插件中读取静态文件 [重复]
【发布时间】:2020-12-31 16:10:12
【问题描述】:
我正在编写一个必须为 XSLT 转换读取 XML 文件的 Eclipse 插件。 XML 文件位于 XSLT/ 目录中。我是这样得到路径的:
String fileXSL = "XSLT/file.xslt";
程序找不到该文件。这种方式也行不通:
this.getClass().getClassLoader().getResource("XSLT/file.xslt");
我已经在 build.properties 中插入了这个目录,但问题仍然存在。有什么想法吗?
【问题讨论】:
标签:
java
eclipse
eclipse-plugin
【解决方案1】:
使用org.eclipse.core.runtime.FileLocator。
首先获取您的捆绑包:
Bundle bundle = Platform.getBundle("your plugin id");
Bundle 也可以在传递给激活器start 方法的BundleContext 中使用。
你也可以使用
Bundle bundle = FrameworkUtil.getBundle(getClass());
获取当前类的捆绑包。
然后您可以使用:
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。