this.getClass()。getClassLoader()。getResourceAsStream()在RCP产品中不起作用

时间:2016-01-27 09:52:25

标签: java eclipse-plugin eclipse-rcp product rcp

当我尝试从Eclipse运行我的RCP应用程序时,

this.getClass().getClassLoader().getResourceAsStream(IMAGE_URL)工作正常。但是,当我将其作为产品运行时,它没有运行。

this.getClass().getClassLoader().getResourceAsStream()返回“null”。有任何线索如何解决这个问题?

注意:我尝试使用Activator.getDefault().getBundle()解决此问题。但这也不起作用。似乎Activator.getDefault() = null这意味着插件没有被激活。我也试图在那里设一个断点。确实,Activator中的null中的插件变量。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

使用FileLocator

Bundle bundle = FrameworkUtil.getBundle(getClass());

InputStream is = FileLocator.openStream(bundle, new Path("relative path"), false);

FileLocator的其他方法会为您提供网址而不是流。

答案 1 :(得分:0)

我遇到了同样的问题。原因是产品构建中缺乏资源。检查MANIFEST.MF > Build,如下图所示,并确保选择的资源包含在二进制构建中。

enter image description here

例如,如果您使用来自icons文件夹的资源,当您从eclipse运行应用程序时,它将完美地运行。导出产品后,此资源不可用。