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