如何注入EPartService

2023-11-29

我正在开发 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(使用前将#替换为@)

如何注入EPartService 的相关文章

随机推荐