我正在开发 e4 应用程序。我想在 Part 和 Handler 之外注入 EPartService
当我注入 EPartService 时,我会得到空指针错误
public class DisplayRuntimePart {
@Inject EPartService partService;
private void displayPart(){
MPart part=partService.findPart("com.rcpe4.myproject.part.datapart");
mpart.setVisible(true);
partService.showPart(mpart, PartState.CREATE);
}
}
我也读过这个问题,但直到没有解决我的问题E4 EPartService findPart() 抛出 java.lang.Null 指针异常
Edit我在 Part 类中注入 EPartService 。 Application.e4xml中的类URI是bundleclass://com.abc.test/com.abc.test.part.MyPart,在这个类中我编写代码如下。
Class Mypart{
@Inject EPartService prtservice;
@Inject
public MyPart() {
}
@PostConstruct
public void postConstruct(Composite parent) {
parent.setLayout(new FillLayout(SWT.HORIZONTAL));
htmlBrowser = new Browser(parent, SWT.NONE);
}
@PreDestroy
public void preDestroy() {
}
@Focus
public void onFocus() {
}
@Persist
public void save() {
}
public dispalyPart(){
MPart mpart=partService.findPart("com.abc.test.part.datapart"); **Here Getting Null Pointer Exception**
mpart.setVisible(true);
partService.showPart(mpart, PartState.CREATE);
}
}
Eclipse 只对它“知道”的对象进行直接注入 - 基本上是应用程序模型(e4xmi)文件中提到的对象或使用类似的东西创建的对象EPartService.showPart
.
如果您想对您创建的对象进行直接注入,那么您需要使用以下命令创建它们ContextInjectionFactory
。例如:
@Inject IEclipseContext context;
...
MyClass myClass = ContextInjectionFactory.make(MyClass.class, context);
您还可以使用以下命令对以正常方式创建的类进行注入:
ContextInjectionFactory.inject(myClass, context);
(这不会在构造函数上进行注入)。
注意:由于此代码使用直接注入,因此您必须从 Eclipse 应用程序模型确实了解的类(例如命令处理程序或 MPart)运行它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)