2016-01-11 24 views
0

我是RCP開發的新手,我在創建產品配置時遇到了問題。 IDE:Eclipse Mars 4.5.1Eclipse RCP:創建基於插件的產品配置時出錯

我使用預定義的模板「RCP 3.x Mail Template」創建了一個名爲「com.ex.mail」的Eclipse插件項目。 這個插件工作(啓動一個單獨的Eclipse應用程序)!

之後,我在同一個插件項目中創建了一個新的產品配置(「mail.product」)。

這是mail.product:

<?xml version="1.0" encoding="UTF-8"?> 
<?pde version="3.5"?> 
<product name="todo" id="com.ex.mail.product1" application="com.ex.mail.application" useFeatures="false" includeLaunchers="true"> 
    <configIni use="default"> 
    </configIni> 
    <launcherArgs> 
     <programArgs>-clean -clearPersistedState 
     </programArgs> 
     <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts 
     </vmArgsMac> 
    </launcherArgs> 
    <launcher> 
     <solaris/> 
     <win useIco="false"> 
     <bmp/> 
     </win> 
    </launcher> 
    <vm> 
    </vm> 
    <plugins> 
     <plugin id="com.ex.mail"/> 
     <plugin id="com.ibm.icu"/> 
     <plugin id="javax.annotation"/> 
     <plugin id="javax.inject"/> 
     <plugin id="javax.xml"/> 
     <plugin id="org.apache.batik.css"/> 
     <plugin id="org.apache.batik.util"/> 
     <plugin id="org.apache.batik.util.gui"/> 
     <plugin id="org.apache.commons.jxpath"/> 
     <plugin id="org.eclipse.core.commands"/> 
     <plugin id="org.eclipse.core.contenttype"/> 
     <plugin id="org.eclipse.core.databinding"/> 
     <plugin id="org.eclipse.core.databinding.observable"/> 
     <plugin id="org.eclipse.core.databinding.property"/> 
     <plugin id="org.eclipse.core.expressions"/> 
     <plugin id="org.eclipse.core.jobs"/> 
     <plugin id="org.eclipse.core.runtime"/> 
     <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/> 
     <plugin id="org.eclipse.e4.core.commands"/> 
     <plugin id="org.eclipse.e4.core.contexts"/> 
     <plugin id="org.eclipse.e4.core.di"/> 
     <plugin id="org.eclipse.e4.core.di.annotations"/> 
     <plugin id="org.eclipse.e4.core.di.extensions"/> 
     <plugin id="org.eclipse.e4.core.services"/> 
     <plugin id="org.eclipse.e4.emf.xpath"/> 
     <plugin id="org.eclipse.e4.ui.bindings"/> 
     <plugin id="org.eclipse.e4.ui.css.core"/> 
     <plugin id="org.eclipse.e4.ui.css.swt"/> 
     <plugin id="org.eclipse.e4.ui.css.swt.theme"/> 
     <plugin id="org.eclipse.e4.ui.di"/> 
     <plugin id="org.eclipse.e4.ui.model.workbench"/> 
     <plugin id="org.eclipse.e4.ui.services"/> 
     <plugin id="org.eclipse.e4.ui.widgets"/> 
     <plugin id="org.eclipse.e4.ui.workbench"/> 
     <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/> 
     <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/> 
     <plugin id="org.eclipse.e4.ui.workbench.swt"/> 
     <plugin id="org.eclipse.e4.ui.workbench3"/> 
     <plugin id="org.eclipse.emf.common"/> 
     <plugin id="org.eclipse.emf.ecore"/> 
     <plugin id="org.eclipse.emf.ecore.change"/> 
     <plugin id="org.eclipse.emf.ecore.xmi"/> 
     <plugin id="org.eclipse.equinox.app"/> 
     <plugin id="org.eclipse.equinox.common"/> 
     <plugin id="org.eclipse.equinox.ds"/> 
     <plugin id="org.eclipse.equinox.preferences"/> 
     <plugin id="org.eclipse.equinox.registry"/> 
     <plugin id="org.eclipse.equinox.util"/> 
     <plugin id="org.eclipse.help"/> 
     <plugin id="org.eclipse.jface"/> 
     <plugin id="org.eclipse.jface.databinding"/> 
     <plugin id="org.eclipse.osgi"/> 
     <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/> 
     <plugin id="org.eclipse.osgi.services"/> 
     <plugin id="org.eclipse.swt"/> 
     <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/> 
     <plugin id="org.eclipse.ui"/> 
     <plugin id="org.eclipse.ui.workbench"/> 
     <plugin id="org.w3c.css.sac"/> 
     <plugin id="org.w3c.dom.events"/> 
     <plugin id="org.w3c.dom.smil"/> 
     <plugin id="org.w3c.dom.svg"/> 
    </plugins> 
    <configurations> 
     <plugin id="com.ex.mail" autoStart="false" startLevel="5" /> 
     <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> 
     <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" /> 
     <plugin id="org.eclipse.equinox.ds" autoStart="true" startLevel="2" /> 
     <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" /> 
     <plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="0" /> 
     <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" /> 
    </configurations> 
</product> 

當我啓動選項卡中的 「概述」 mail.product使用鏈接RCP應用我有此錯誤:

!ENTRY org.eclipse.e4.ui.workbench.swt 4 2 2016-01-11 12:19:58.277 
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.e4.ui.workbench.swt". 
!STACK 0 
org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException 
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:898) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:121) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:86) 
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.inject(ContextInjectionFactory.java:73) 
    at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1486) 
    at org.eclipse.ui.internal.Workbench.getActiveWorkbenchWindow(Workbench.java:1460) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider.updateActiveShell(WorkbenchSourceProvider.java:944) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider.getCurrentState(WorkbenchSourceProvider.java:138) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider$6.handleEvent(WorkbenchSourceProvider.java:704) 
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1266) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1112) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1137) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1122) 
    at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1673) 
    at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2193) 
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4673) 
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:339) 
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1633) 
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2117) 
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5050) 
    at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method) 
    at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:230) 
    at org.eclipse.swt.widgets.Shell.open(Shell.java:1244) 
    at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.postProcess(WBWRenderer.java:694) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:717) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:711) 
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1057) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018) 
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) 
    at com.ex.mail.Application.start(Application.java:20) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1515) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1488) 
Caused by: java.lang.NullPointerException 
    at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:4057) 
    at org.eclipse.ui.internal.WorkbenchWindow.setup(WorkbenchWindow.java:737) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) 
    ... 53 more 

!ENTRY org.eclipse.e4.ui.workbench 4 0 2016-01-11 12:19:58.280 
!MESSAGE Exception occurred while rendering: org.[email protected]67545b57 (elementId: IDEWindow, tags: [topLevel], contributorURI: platform:/plugin/org.eclipse.ui.workbench) (widget: Shell {todo}, renderer: [email protected], toBeRendered: true, onTop: false, visible: true, containerData: null, accessibilityPhrase: null) (label: null, iconURI: null, tooltip: null, context: TrimmedWindowImpl (IDEWindow) Context, variables: [], x: 125, y: 125, width: 600, height: 400) 
!STACK 0 
org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException 
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:68) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:898) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:121) 
    at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:86) 
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.inject(ContextInjectionFactory.java:73) 
    at org.eclipse.ui.internal.Workbench.createWorkbenchWindow(Workbench.java:1486) 
    at org.eclipse.ui.internal.Workbench.getActiveWorkbenchWindow(Workbench.java:1460) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider.updateActiveShell(WorkbenchSourceProvider.java:944) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider.getCurrentState(WorkbenchSourceProvider.java:138) 
    at org.eclipse.ui.internal.services.WorkbenchSourceProvider$6.handleEvent(WorkbenchSourceProvider.java:704) 
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1266) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1112) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1137) 
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1122) 
    at org.eclipse.swt.widgets.Decorations.WM_ACTIVATE(Decorations.java:1673) 
    at org.eclipse.swt.widgets.Shell.WM_ACTIVATE(Shell.java:2193) 
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4673) 
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:339) 
    at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1633) 
    at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2117) 
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5050) 
    at org.eclipse.swt.internal.win32.OS.BringWindowToTop(Native Method) 
    at org.eclipse.swt.widgets.Decorations.bringToTop(Decorations.java:230) 
    at org.eclipse.swt.widgets.Shell.open(Shell.java:1244) 
    at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.postProcess(WBWRenderer.java:694) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:658) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:717) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:711) 
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1057) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018) 
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) 
    at com.ex.mail.Application.start(Application.java:20) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) 
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1515) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1488) 
Caused by: java.lang.NullPointerException 
    at org.eclipse.ui.internal.WorkbenchPage.setPerspective(WorkbenchPage.java:4057) 
    at org.eclipse.ui.internal.WorkbenchWindow.setup(WorkbenchWindow.java:737) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) 
    ... 53 more 

建議? 謝謝

+0

可能缺少一些插件。在.product編輯器中切換到「內容」選項卡並單擊「添加必需」按鈕。 –

+0

我以這種方式添加了所有插件。另外,在'配置'選項卡的「開始級別」框中,我通過單擊'添加推薦...'按鈕添加了其他插件。我仍然有錯誤! – CarlosD

回答

0

您是否同步了產品?該產品是否指向一個實例化的「org.eclipse.runtime.products」擴展點?應用程序是否指向一個實例化的org.eclipse.core.runtime.applications?

由於堆棧跟蹤顯示與透視圖相關的問題,我建議沒有實例化的應用程序,其屬性WorkbenchAdvisor提供了初始的Windows透視圖。

+0

在使用「Eclipse產品導出嚮導」導出產品後,它可以在Eclipse環境下運行。問題是當我在IDE中運行產品時eclipse – CarlosD

+0

您是否同步配置? – alt3

+0

是的!現在應用程序啓動時沒有菜單和窗口。在控制檯已經消失了以前的錯誤,但我總是以下消息:!ENTRY org.eclipse.e4.ui.workbench 4 0 2016-01-12 14:29:17.820 !MESSAGE事件管理服務不可用,無法發佈事件org.osgi.service.event.Event [topic = org/eclipse/e4/ui/renderer/requestEnablementUpdate] {org.eclipse.e4.data = ALL}。 – CarlosD

0

使用eclipse mars,該向導實際上可以爲您創建基本的富客戶端應用程序,其中包括產品配置文件,應用程序模型文件和添加的必需插件。您不必自己創建和配置產品配置。

看看這個simple tutorial如何開始。