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