2017-03-07 61 views
0

我有一个我似乎无法解决的问题的Xtext项目。请看下面的代码:NullPointerException与IResourceSetProvider?

@Inject 
IResourceSetProvider resourceSetProvider; 

private void function(){ 
    IProject project = file.getProject(); 

    URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true); 
    ResourceSet resourceSet = resourceSetProvider.get(project); 
    Resource resource = resourceSet.getResource(uri, true); 
} 

对象“文件”是一个的IFile作为该函数的参数传递,并且不为空,因为我能够访问其内容,甚至打印出来作为字符串,例如。我也可以访问其IProject字段并对其执行操作。但是,我在ResourceSet行上发现了NullPointerException,即在“.get(project)”函数中。鉴于上述项目肯定不是空的,在此步骤会发生什么样的NullPointerException?

感谢您的帮助!

+0

我认为你需要提供一个减少的封闭类,进口等 – efekctive

+0

道歉......我感谢你试图帮助,但我似乎无法解决这个问题。你是正确的resourceSetProvider为空,所以有什么东西在注入失败... 我没有提到我所展示的代码块是在类内,如果相关。 –

+0

好吧,我设法通过完全删除注入并手动实例化IResourceSetProvider来解决此问题。 'IResourceSetProvider rs1 = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(uri).get(IResourceSetProvider.class);' –

回答

0

任一项目为空或注入失败且提供程序为空。你说变量项目不是null。然后注射失败。

+0

对不起......不知道我在跟着。注射失败怎么办? –

+0

鉴于您提供的代码是这一行的唯一选项。如果osgi容器在扫描/注射阶段无法识别您的分类为可注射 – efekctive

+1

@ sentient_6,则注射失败,重要的是通过注入来创建封闭类型的实例。 – Alex