Eclipse RCP(e4)的新增功能,试图获取一个处理程序来更新Part中的UI小部件。
我尝试注入EPartService
首先通过ID访问部件,如下所示:
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
没有被注入?我没有正确添加吗? 最佳答案
注入仅在应用程序模型已知的对象(例如零件和处理程序)上自动完成。
对于创建的对象,可以使用ContextInjectionFactory
进行注入。您可以使用以下方法创建对象:
@Inject
IEclipseContext context;
...
MyClass myClass = ContextInjectionFactory.make(MyClass.class, context);
或者您可以使用以下方法在现有的类实例上进行注入:
ContextInjectionFactory.inject(myClass, context);
在这种情况下,不会在类构造函数上进行注入。
make
和inject
的其他变体具有第二个上下文,该上下文允许将其他值添加到要注入的上下文中。关于java - E4 EPartService findPart()抛出java.lang.Null指针异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24503116/