Eclipse plugin 无法创建类兼容性视图

Eclipse plugin 无法创建类兼容性视图,eclipse-plugin,eclipse-rcp,Eclipse Plugin,Eclipse Rcp,我是Eclipse RCP的新手。我尝试使用默认的项目浏览器在E4的基础上构建一个RCP项目。我找到了这两个教程:dirksmetric.wordpress.com/2012/08/01/tutorial-eclipse-rcp-e4-with-3-x-views-like-project-explorer-properties-etc/vogella.com/tutorials/eclipsee4migrationguide/article.html 毕竟,我有一个包含部件的窗口,但项目资源管

我是Eclipse RCP的新手。我尝试使用默认的项目浏览器在E4的基础上构建一个RCP项目。我找到了这两个教程:dirksmetric.wordpress.com/2012/08/01/tutorial-eclipse-rcp-e4-with-3-x-views-like-project-explorer-properties-etc/vogella.com/tutorials/eclipsee4migrationguide/article.html

毕竟,我有一个包含部件的窗口,但项目资源管理器没有加载。这是日志中的堆栈

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

我尝试了谷歌的所有TIPP,但我不知道该怎么办


谢谢你的帮助

我像年一样从头开始做了一个新的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组件。下一个问题是,第二个扩展点必须指向与Application.e4xmi中相同的id:id=“spside.rcp.perspective”。

ProjectExplorer需要太多的3.x兼容模式代码,因此您可能最好只使用3.x样式的rcp。eclipse自己用哪种方式来实现?特别是在氧气释放方面?我不敢相信他们在e4上工作了这么长时间而没有为Eclipse使用3.x风格的RCP。Eclipse本身就是一个3.x兼容模式的RCP,有大量3.x风格的代码是永远不会消失的。纯e4应用程序主要用于不使用任何3.x代码的应用程序。