this.getClass().getClassLoader().getResourceAsStream() 在 RCP 产品中不起作用
this.getClass().getClassLoader().getResourceAsStream()is not working in RCP product
当我尝试从 Eclipse 运行 我的 RCP 应用程序时,this.getClass().getClassLoader().getResourceAsStream(IMAGE_URL)
工作正常。但是,当我 运行ning 将它作为产品时,它不是 运行ning。
this.getClass().getClassLoader().getResourceAsStream()
returns“空”。知道如何解决这个问题吗?
注意:我已尝试使用 Activator.getDefault().getBundle()
解决此问题。但这也行不通。似乎 Activator.getDefault() = null
这意味着该插件未激活。我也试图在那里设置一个断点。确实插件变量在null
in Activator.
我该怎么办?
使用FileLocator
:
Bundle bundle = FrameworkUtil.getBundle(getClass());
InputStream is = FileLocator.openStream(bundle, new Path("relative path"), false);
FileLocator
的其他方法会给您 URL 而不是流。
我遇到了同样的问题。原因是产品构建中缺乏资源。如下图所示检查 MANIFEST.MF > Build
并确保选择资源以包含在二进制构建中。
例如,如果您使用 icons 文件夹中的资源,那么当您从 eclipse 运行 应用程序时,它将完美地工作。导出产品后,该资源不可用。
this.getClass().getClassLoader().getResourceAsStream(IMAGE_URL)
工作正常。但是,当我 运行ning 将它作为产品时,它不是 运行ning。
this.getClass().getClassLoader().getResourceAsStream()
returns“空”。知道如何解决这个问题吗?
注意:我已尝试使用 Activator.getDefault().getBundle()
解决此问题。但这也行不通。似乎 Activator.getDefault() = null
这意味着该插件未激活。我也试图在那里设置一个断点。确实插件变量在null
in Activator.
我该怎么办?
使用FileLocator
:
Bundle bundle = FrameworkUtil.getBundle(getClass());
InputStream is = FileLocator.openStream(bundle, new Path("relative path"), false);
FileLocator
的其他方法会给您 URL 而不是流。
我遇到了同样的问题。原因是产品构建中缺乏资源。如下图所示检查 MANIFEST.MF > Build
并确保选择资源以包含在二进制构建中。
例如,如果您使用 icons 文件夹中的资源,那么当您从 eclipse 运行 应用程序时,它将完美地工作。导出产品后,该资源不可用。