Tidak dapat membuat kelas CompatibilityView

saya baru di Eclipse RCP. Saya mencoba membangun proyek RCP berdasarkan E4 dengan penjelajah proyek default. Saya menemukan dua tutorial ini: 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

Lagi pula saya memiliki jendela dengan bagian-bagian tetapi penjelajah proyek tidak dimuat. Ini adalah stackstrace dari log.

!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)

ini plugin.xml saya

<?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>

Saya mencoba semua tip dari Google tetapi saya tidak tahu harus berbuat apa.

terimakasih atas bantuannya!


person Fry123    schedule 15.07.2017    source sumber
comment
Project Explorer akan memerlukan begitu banyak kode mode kompatibilitas 3.x sehingga Anda mungkin lebih baik menggunakan RCP gaya 3.x saja.   -  person greg-449    schedule 15.07.2017
comment
Di arah manakah gerhana itu sendiri melakukannya? Khususnya dalam pelepasan Oksigen? Saya tidak percaya mereka bekerja di e4 untuk waktu yang lama dan menggunakan RCP gaya 3.x untuk Eclipse.   -  person Fry123    schedule 16.07.2017
comment
Eclipse sendiri adalah mode kompatibilitas 3.x RCP, ada sejumlah besar kode gaya 3.x yang tidak akan pernah hilang. Aplikasi e4 murni terutama ditujukan untuk aplikasi yang tidak menggunakan kode 3.x apa pun.   -  person greg-449    schedule 16.07.2017


Jawaban (1)


Saya membuat proyek RCP baru dari awal seperti di tutorial ini dan berhasil. Setelah ini, saya menyadari bahwa pom.xml proyek asli saya terlihat berbeda dengan yang baru.

<?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>

Saya pikir masalah utamanya adalah saya tidak menginisialisasi Komponen 3.x di ekstensi pertama. Masalah selanjutnya adalah titik ekstensi kedua harus menargetkan ke id yang sama: id="spside.rcp.perspective" seperti pada Application.e4xmi.

person Fry123    schedule 30.08.2017