我已经制作了一个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。
答案 0 :(得分:1)
您必须确保您的RCP仅包含一次捆绑com.google.inject
。不知怎的,它加载了两个不同的版本,并且都可以用于你的DSL插件。