我是Eclipse 4,RCP和SWT的新手,我坚持这个问题:
我想从具有相对文件路径的代码访问图像资源。问题是默认位置./
设置为我的主目录/home/name/
(我使用Ubuntu)。我发现通过创建一个新文件并打印其CanonicalPath。
我习惯将默认位置设置为项目目录,例如/home/name/workspace/project/
,这是我迄今为止看到的Eclipse / java程序中的默认行为。
我想保留这种行为,因为它对我来说似乎更可靠(例如在部署之后)。
注意:我已经标记了e4,rcp和swt,因为我不确定哪一个会导致差异。
答案 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
插件。