访问资源的相对文件路径
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
插件)。
我对 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
插件)。