2014-03-07 147 views
3

我已經做了一個xtext編輯器(2.5)。 我嘗試在我的RCP應用程序中使用此編輯器。如何將xText編輯器添加到Eclipse(e4)RCP應用程序中?

我用這個代碼:

Injector injector = MyDslActivator.getInstance().getInjector(MyDslActivator.XTEXT_DSL_MYDSL); 
EmbeddedEditorFactory factory = injector.getInstance(EmbeddedEditorFactory.class); 
editor = factory.newEditor(resourceProvider).showErrorAndWarningAnnotations().withParent(container); 

但我得到了一個錯誤

java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) previously initiated loading for a different type with name "com/google/inject/Injector" 

UPD1

軟件包 「eclipse.m2e.maven.runtime」 有包「 org.google.inject「與另一個版本。解決方案是從該項目中排除該捆綁。

但現在我得到了新的錯誤。

Caused by: java.lang.NullPointerException 
at org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorActions.initialize(EmbeddedEditorActions.java:124) 
at org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorActions.<init>(EmbeddedEditorActions.java:119) 
at org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorActions$Factory.createActions(EmbeddedEditorActions.java:63) 
at org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorFactory$Builder.initializeActions(EmbeddedEditorFactory.java:397) 
at org.eclipse.xtext.ui.editor.embedded.EmbeddedEditorFactory$Builder.withParent(EmbeddedEditorFactory.java:233) 

它發生的原因是谷歌注射器不會將IWorkbench插入到EmbeddedEditorActions.Factory中。

我不知道如何解決它。 e4應用程序有org.eclipse.e4.ui.workbench.IWorkbench,bot沒有org.eclipse.ui.IWorkbench。

回答

1

您必須確保您的RCP僅包含com.google.inject套件一次。不知何故,它被加載了兩個不同的版本,並且都可用於您的DSL插件。

+0

你說得對。我不知道捆綁包「eclipse.m2e.maven.runtime」與另一個版本有「org.google.inject」包。 – SergSW

相關問題