我有一个 E4 应用程序,我需要将 MApplication 注入到第一个创建的类中。该类本身已在我的 Activator 的启动方法中创建并在那里调用。我的类称为 FrameworkModule,看起来像:public class FrameworkModule implements ISubscription { private static final Logger logger = LoggerFactory.getLogger(FrameworkModule.class); private @Inject IEclipseContext context; protected @Inject EPartService partService; protected @Inject MApplication application; protected @Inject EModelService modelService;...}激活器将创建上述类并运行它的一个方法。激活器的启动方法如下所示:@Override public void start(BundleContext bundleContext) throws Exception { Activator.context = bundleContext; IEclipseContext eContext = EclipseContextFactory.getServiceContext(bundleContext); ExecutorService service = Executors.newSingleThreadExecutor(); service.execute(() -> { framework = ContextInjectionFactory.make(FrameworkModule.class, eContext); framework.startup(); }); service.execute(() -> CacheUtil.getManager()); service.shutdown(); }如何在我的 FrameworkModule 类中解决这个问题?我在那里需要所有注入的类,但找不到将它放在那里的方法。
1 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
only返回的服务上下文EclipseContextFactory.getServiceContext
内容非常有限,不包括MApplication
. 您不能在激活器中创建这样的类。
具体取决于您要如何使用该类,您可以:
在 application.e4xmi 或 fragment.e4xmi 中指定的“附加组件”中创建类
只需让它使用
@Creatable
类上的注释自动创建即可。@Singleton
如果您想要该类的单个实例,也可以使用注释。在 LifeCycle 类中创建它
使用一个创建它
ContextFunction
添加回答
举报
0/150
提交
取消