3

我已经制作了一个 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)

发生这种情况是因为 google 注入器没有将 IWorkbench 注入 EmbeddedEditorActions.Factory。

我不知道如何解决它。e4 应用程序有 org.eclipse.e4.ui.workbench.IWorkbench,bot 没有 org.eclipse.ui.IWorkbench。

4

1 回答 1

1

You have to make sure that your RCP contains the bundle com.google.inject only once. Somehow it was loaded in two different versions and both were made available to your DSL plugin.

于 2014-03-07T07:07:43.710 回答