2
如果创建以下OSGI-INF/service.xml中,并通过服务组件的设置:OSGi的-INF /在我MANIFEXT.MF service.xml中的Eclipse E4 OSGi服务@Component注释
<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="EvalManagerContextFunction">
<implementation class="x.y.context.EvalManagerContextFunction"/>
<property name="service.context.key" type="String" value="x.y.eval.EvalManager"/>
<service>
<provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
</service>
</scr:component>
的如果第一次请求EvalManager(ContextFunction类compute
被调用),则创建EvalManager
现在,如果我尝试使用注释执行相同操作,则不会调用函数compute
。
@Component(name = "EvalManagerContextFunction", service = IContextFunction.class, property = "service.context.key=x.y.eval.EvalManager")
public class EvalManagerContextFunction extends ContextFunction {
@Override
public Object compute(IEclipseContext context, String contextKey) {
EvalManager manager = ContextInjectionFactory.make(EvalManager.class, context);
context.get(MApplication.class).getContext().set(EvalManager.class, ContextInjectionFactory.make(EvalManager.class, context));
return manager;
}
}
好的谢谢格雷格。现在我将与xml文件一起生活。 – Pascal
我已经使用了您提到的DS支持插件,它工作得很完美。每当您更改组件时,插件都会自动创建XML定义文件。 –
我正在使用Neon M6,但它与插件不兼容失败。这个插件的作者回答了一个问题,他说它应该在Neon M6中工作,而不需要添加额外的插件'Dirk,这个插件实现的功能直接从Neon M6(即将发布)直接添加到Eclipse PDE中。请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id = 376950' – Pascal