ไม่สามารถสร้างคลาส CompatibleView ได้

ฉันใหม่ใน 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

ท้ายที่สุดฉันมีหน้าต่างพร้อมส่วนต่าง ๆ แต่ไม่ได้โหลด project explorer นี่คือ 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 เดียวกัน: id="spside.rcp.perspective" เช่นเดียวกับใน Application.e4xmi

person Fry123    schedule 30.08.2017