2014-03-07 3 views
3

저는 이미 xtext 편집기 (2.5)를 만들었습니다. RCP 응용 프로그램의 일부에서이 편집기를 사용하려고합니다.Eclipse (e4) RCP 응용 프로그램에 xText 편집기를 추가하려면 어떻게합니까?

나는이 코드를 사용합니다

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가 없습니다.

답변

1

RCP에 번들 com.google.inject이 한 번만 포함되어 있는지 확인해야합니다. 어떻게 든 그것은 두 가지 다른 버전으로로드되었고 모두 DSL 플러그인에서 사용할 수있게되었습니다.

+0

당신 말이 맞습니다. 나는 "eclipse.m2e.maven.runtime"번들에 다른 버전의 "org.google.inject"패키지가 있다는 것을 몰랐다. – SergSW

관련 문제