Не удалось создать класс CompatibilityView

я новичок в Eclipse RCP. Я пытаюсь создать проект RCP на основе E4 с проводником проекта по умолчанию. Я нашел два учебника: dirksmetric.wordpress.com/2012/08/01/tutorial-eclipse-rcp-e4-with-3-x-views-like-project-explorer-properties-etc/vogella.com/tutorials/ Eclipse4MigrationGuide/article.html

Ведь у меня есть окно с деталями, но проводник проекта не загружается. Это stackstrace из журнала.

!ENTRY org.eclipse.e4.ui.workbench 4 0 2017-07-14 12:11:32.706
!MESSAGE Unable to create class 'org.eclipse.ui.internal.e4.compatibility.CompatibilityView' from bundle '86'
!STACK 0
org.eclipse.e4.core.di.InjectionException: Could not find satisfiable constructor in org.eclipse.ui.internal.e4.compatibility.CompatibilityView
    at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:408)
    at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:318)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74)
    at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56)
    at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.run(PartRenderingEngine.java:551)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:535)
    at org.eclipse.e4.ui.workbench.renderers.swt.ElementReferenceRenderer.createWidget(ElementReferenceRenderer.java:70)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:997)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:666)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:772)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:743)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:737)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:721)
    at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.showTab(StackRenderer.java:1289)
    at org.eclipse.e4.ui.workbench.renderers.swt.LazyStackRenderer.lambda$0(LazyStackRenderer.java:68)
    at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:5439)

это мой plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
        id="product_spside"
        point="org.eclipse.core.runtime.products"> <!-- org.eclipse.core.runtime.applications -->

        <product application="org.eclipse.e4.ui.workbench.swt.E4Application" name="SPS IDE">
        <!-- org.eclipse.e4.ui.workbench.swt.E4Application -->    
        <property name="appName" value="SPS IDE"> </property>
        <property name="applicationXMI" value="spside.rcp/Application.e4xmi"> </property>
    </product>
      <!-- <application>
        <run
            class="spside.rcp.Application">
        </run>
    </application>-->   
   </extension>
    <!-- <extension point="org.eclipse.ui.perspectives">
        <perspective
            name="RCP Perspective"
            class="spside.rcp.Perspective"
            id="spside.rcp.perspective">
      </perspective>
   </extension>-->   
</plugin>

Я пробую все советы от Google, но я понятия не имею, что делать.

Спасибо за помощь!


person Fry123    schedule 15.07.2017    source источник
comment
Project Explorer потребует так много кода режима совместимости 3.x, что вам, вероятно, будет лучше просто использовать RCP в стиле 3.x.   -  person greg-449    schedule 15.07.2017
comment
На каком пути само затмение это сделать? В частности, в выпуске кислорода? Я не могу поверить, что они работают на e4 так долго, что используют RCP в стиле 3.x для Eclipse.   -  person Fry123    schedule 16.07.2017
comment
Eclipse сам по себе является RCP режима совместимости 3.x, существует огромное количество кода в стиле 3.x, который никогда не исчезнет. Чистое приложение e4 в первую очередь предназначено для приложения, которое не использует код 3.x.   -  person greg-449    schedule 16.07.2017


Ответы (1)


Я создал новый проект RCP с нуля, как в это руководство, и это сработало. После этого я понял, что мой pom.xml исходного проекта выглядит иначе, чем новый.

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

   <extension
         id="application"
         point="org.eclipse.core.runtime.applications">
      <application>
         <run
               class="spside.rcp.Application">
         </run>
      </application>
   </extension>
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            name="Perspective"
            class="spside.rcp.Perspective"
            id="spside.rcp.perspective">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.views">
      <view
            name="View"
            inject="true"
            class="spside.rcp.View"
            id="spside.rcp.view">
      </view>
   </extension>
   <extension
         point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension
            targetID="*">
         <view
               standalone="true"
               minimized="false"
               relative="org.eclipse.ui.editorss"
               relationship="left"
               id="spside.rcp.view">
         </view>
      </perspectiveExtension>
   </extension>
   <extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="menu:org.eclipse.ui.main.menu">
         <menu
               label="File">
            <command
                  commandId="org.eclipse.ui.file.exit"
                  label="Exit">
            </command>
         </menu>
      </menuContribution>
   </extension>
<extension id="product_test" point="org.eclipse.core.runtime.products">
  <product application="spside.rcp.application" name="My Product">
    <property name="appName" value="SPS IDE"> </property>
    <property name="applicationXMI" value="spside.rcp/Application.e4xmi"> </property>
  </product>
</extension>
</plugin>

Я думаю, что основная проблема заключалась в том, что я не инициализировал компоненты 3.x в первом расширении. Следующая проблема заключалась в том, что вторая точка расширения должна быть нацелена на тот же идентификатор: id="spside.rcp.perspective", что и в Application.e4xmi.

person Fry123    schedule 30.08.2017