2017-07-15 110 views
0

我是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/ Eclipse4MigrationGuide/article.html无法创建类CompatibilityView

毕竟我有一个窗口的部分,但没有加载项目浏览器。这是来自日志的堆栈。

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

我试着从谷歌所有的窍门,但我不知道该怎么做。

感谢您的帮助!

+0

Project Explorer将需要非常多的3.x兼容性模式代码,您可能会更好地使用3.x风格的RCP。 –

+0

在哪个方法蚀自己做?特别在氧气释放?我无法相信他们在e4上工作了很长时间,在Eclipse中使用3.x风格的RCP。 – Fry123

+0

Eclipse本身是一个3.x兼容模式RCP,有大量的3.x风格的代码,永远不会消失。纯粹的e4应用程序主要用于不使用任何3.x代码的应用程序。 –

回答

0

我从零开始制作了一个新的RCP项目,就像this tutorial一样,它工作。在此之后,我意识到原始项目的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中所示。