2017-07-15 68 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中所示。