gpt4 book ai didi

eclipse-rcp - 如何注入(inject) EPartService

转载 作者:行者123 更新时间:2023-12-01 05:09:55 25 4
gpt4 key购买 nike

我正在开发 e4 应用程序。我想在 Part 和 Handler 之外注入(inject) EPartService
当我注入(inject) 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() throwing java.lang.Null Pointer Exception

编辑
我在 Part 类中注入(inject) 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 只对它“知道”的对象进行直接注入(inject) - 基本上是在应用程序模型 (e4xmi) 文件中提到的对象或使用类似 EPartService.showPart 的东西创建的对象。 .

如果你想对你创建的对象进行直接注入(inject),那么你需要使用 ContextInjectionFactory 创建它们。 .例如:

@Inject IEclipseContext context;

...

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

您还可以通过以下方式对以正常方式创建的类进行注入(inject):

ContextInjectionFactory.inject(myClass, context);

(这不会对构造函数进行注入(inject))。

注意:由于此代码使用直接注入(inject),因此您必须从 Eclipse 应用程序模型知道的类(例如命令处理程序或 MPart)运行它。

关于eclipse-rcp - 如何注入(inject) EPartService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25759291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com