访问资源的相对文件路径

Relative filepath to access resources

我对 Eclipse 4、RCP 和 SWT 很陌生,我被这个问题困住了: 我想从具有相对文件路径的代码访问图像资源。问题是默认位置 ./ 设置为我的主目录 /home/name/(我正在使用 Ubuntu)。我发现通过创建一个新文件并打印其 CanonicalPath。

我习惯于将默认位置设置为项目目录,例如 /home/name/workspace/project/,据我目前所见,这是 Eclipse 中的默认行为 / java程序。

我想保留此行为,因为它对我来说似乎更可靠(例如在部署之后)。

注意:我已经标记了e4、rcp和swt,因为我不确定是哪一个造成了差异。

在 Eclipse 插件(包括 RCP 代码)中,您应该使用 FileLocator class 在插件中查找资源。

您将资源作为流打开:

Bundle bundle = ... plugin bundle

IPath path = new Path("path relative to plugin root");

InputStream is = FileLocator.openStream(bundle, path, true);

您也可以使用 FileLocator.find:

URL url = FileLocator.find(bundle, path, null);

URL fileUrl = FileLocator.toFileURL(url);

不要忘记在 build.properties.

中包含您的资源目录

如果你的图片不在插件中,你就不能真正使用相对路径。

在 e4 插件中,您可以使用 @OSGiBundle:

注入 Bundle
@Inject
@OSGiBundle
Bundle bundle;

@OSGiBundle 需要依赖 org.eclipse.e4.core.di.extensions 插件)。