2016-04-14 90 views
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被調用),則創建Ev​​alManager

現在,如果我嘗試使用註釋執行相同操作,則不會調用函數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; 

    } 

} 

回答

1

我看不到的@Component註記類在Eclipse的核心源代碼任意任何引用所以它會出現,不支持。

Eclipse Marketplace中有一個插件here,它似乎增加了對此的支持(我還沒有嘗試過)。

更新:在Eclipse Neon Milestone 6(4.6M6)版本中添加了對此的支持。

+0

好的謝謝格雷格。現在我將與xml文件一起生活。 – Pascal

+0

我已經使用了您提到的DS支持插件,它工作得很完美。每當您更改組件時,插件都會自動創建XML定義文件。 –

+0

我正在使用Neon M6,但它與插件不兼容失敗。這個插件的作者回答了一個問題,他說它應該在Neon M6中工作,而不需要添加額外的插件'Dirk,這個插件實現的功能直接從Neon M6(即將發佈)直接添加到Eclipse PDE中。請參閱https://bugs.eclipse.org/bugs/show_bug.cgi?id = 376950' – Pascal

相關問題