【问题标题】:How can I add xText editor to Eclipse (e4) RCP Application?如何将 xText 编辑器添加到 Eclipse (e4) RCP 应用程序?
【发布时间】:2014-04-10 04:08:37
【问题描述】:

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

【问题讨论】:

    标签: eclipse-rcp rcp xtext e4


    【解决方案1】:

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

    【讨论】:

    • 你是对的。我不知道包“eclipse.m2e.maven.runtime”有包“org.google.inject”和另一个版本。
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多