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 运行 应用程序时,它将完美地工作。导出产品后,该资源不可用。