E4 EPartService findPart()抛出java.lang.Nullpointerexception

时间:2014-07-01 05:37:18

标签: java eclipse-rcp e4

Eclipse RCP(e4)的新手,我试图获得一个处理程序来更新部件中的UI小部件。

我已尝试注入EPartService以首先按ID访问Part,如下所示:

public class Example {

    public static final String PART_ID = “au.org.example.app.part”;

    @Inject
    private EPartService partService;

    public void eventOccured()
    {
        MPart part = partService.findPart(PART_ID); // exception thrown here    
    }

} 

但这是投掷NPE。

如果ID不正确,

findPart()至少应该安全返回null?那我错过了什么?

我也对相关教程的建议持开放态度(已完成了一些Lars Vogella's精彩教程,但无法解决这个问题)。

如需了解更多信息,请告知我们。

编辑:看起来EPartService没有被注入?我没有正确添加吗?

1 个答案:

答案 0 :(得分:2)

注入仅在应用程序模型已知的对象上自动完成 - 例如零件和处理程序。

对于您创建的对象,您可以使用ContextInjectionFactory进行注射。您可以使用以下命令创建对象:

@Inject
IEclipseContext context;

...

MyClass myClass = ContextInjectionFactory.make(MyClass.class, context);

或者您可以使用以下命令对现有的类实例执行注入:

ContextInjectionFactory.inject(myClass, context);

在这种情况下,不对类构造函数执行注入。

还有makeinject的其他变体,它们具有第二个上下文,允许将其他值添加到正在注入的上下文中。