NullPointerException с IResourceSetProvider?

У меня есть проект Xtext с проблемой, которую я не могу решить. Рассмотрим следующий код:

@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 и выполнять над ним операции. Однако я получаю исключение NullPointerException в строке ResourceSet, а именно в функции «.get(project)». Что может привести к возникновению исключения NullPointerException на этом этапе, учитывая, что указанный проект определенно не является нулевым?

Спасибо за помощь!


person sentient_6    schedule 07.03.2017    source источник
comment
Я думаю, вам нужно предоставить сокращенный класс включения, импорт и т.д.   -  person efekctive    schedule 07.03.2017
comment
Извините... Я ценю вашу попытку помочь, но я не могу это исправить. Вы были правы насчет того, что resourceSetProvider имеет значение null, поэтому что-то не получается при внедрении... Я не упомянул, что этот блок кода, который я показал, находится внутри класса, если это уместно.   -  person sentient_6    schedule 08.03.2017
comment
Что ж, мне удалось решить эту проблему, полностью удалив инъекцию и создав экземпляр IResourceSetProvider вручную. IResourceSetProvider rs1 = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(uri).get(IResourceSetProvider.class);   -  person sentient_6    schedule 08.03.2017
comment
Я рад, что у тебя получилось. Если это не слишком много может принять ответ?   -  person efekctive    schedule 08.03.2017
comment
Конечно! Спасибо за помощь! :-)   -  person sentient_6    schedule 08.03.2017


Ответы (1)


Либо проект имеет значение null, либо инъекция не удалась, а поставщик имеет значение null. Вы говорите, что переменный проект не равен нулю. Тогда инъекция не удалась.

person efekctive    schedule 07.03.2017
comment
Извините... не уверен, что понимаю. Как инъекция может не сработать? - person sentient_6; 07.03.2017
comment
Учитывая предоставленный вами код, это единственные параметры в этой строке. Внедрение завершается неудачно, если контейнер osgi не распознает ваш класс на этапе сканирования/внедрения как инжектируемый. - person efekctive; 07.03.2017
comment
@sentient_6, важно, чтобы вы создавали экземпляры объемлющего типа с помощью инъекции. - person Alex; 07.03.2017