用于访问资源的相对文件路径

时间:2016-07-18 08:10:39

标签: java swt rcp e4

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

我习惯将默认位置设置为项目目录,例如/home/name/workspace/project/,这是我迄今为止看到的Eclipse / java程序中的默认行为。

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

注意:我已经标记了e4,rcp和swt,因为我不确定哪一个会导致差异。

1 个答案:

答案 0 :(得分:0)

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

您将资源打开为流:

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插件中,您可以使用Bundle

注入@OSGiBundle
@Inject
@OSGiBundle
Bundle bundle;

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