如何将xText编辑器添加到Eclipse(e4)RCP应用程序中?

时间:2014-03-07 06:10:47

标签: eclipse-rcp rcp xtext e4

我已经制作了一个xtext编辑器(2.5)。 我尝试在我的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 个答案:

答案 0 :(得分:1)

您必须确保您的RCP仅包含一次捆绑com.google.inject。不知怎的,它加载了两个不同的版本,并且都可以用于你的DSL插件。