2017-05-31 5 views
0

私は、EclipseのプラグインにmenuContributionを追加していると私は、上記のエラーメッセージを取得しています。以下は、fragment.e4xmi以下java.lang.ArrayStoreException:org.eclipse.e4.ui.model.application.ui.menu.impl.MenuContributionImpl

<?xml version="1.0" encoding="ASCII"?> 
<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_PPqj4EOQEeedq-IevvWAag"> 
    <fragments xsi:type="fragment:StringModelFragment" xmi:id="_p3R7sEOQEeedq-IevvWAag" featurename="commands" parentElementId="org.eclipse.e4.legacy.ide.application"> 
    <elements xsi:type="commands:Command" xmi:id="_4tuLgEOQEeedq-IevvWAag" elementId="com.bodastage.e4.clock.ui.command.hello" commandName="Hello" description="Says Hello World"/> 
    </fragments> 
    <fragments xsi:type="fragment:StringModelFragment" xmi:id="_hDBbUEOREeedq-IevvWAag" featurename="handlers" parentElementId="org.eclipse.e4.legacy.ide.application"> 
    <elements xsi:type="commands:Handler" xmi:id="_pG9ckEOREeedq-IevvWAag" elementId="com.bodastage.e4.clock.ui.handler.HelloHandler" contributionURI="bundleclass://com.bodastage.e4.clock.ui/com.bodastage.e4.clock.ui.handlers.HelloHandler" command="_4tuLgEOQEeedq-IevvWAag"/> 
    </fragments> 
    <fragments xsi:type="fragment:StringModelFragment" xmi:id="_8OBJMEZTEeehrvUiei9LJA" featurename="handlers" parentElementId="org.eclipse.e4.legacy.ide.application"> 
    <elements xsi:type="menu:MenuContribution" xmi:id="_JcJ-cEZUEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.menucontribution.0" parentId="help"> 
     <children xsi:type="menu:HandledMenuItem" xmi:id="_OSQxwEZUEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.handledmenuitem.Hello" label="Hello" iconURI="platform:/plugin/com.bodastage.e4.clock.ui/icons/sample.gif" command="_4tuLgEOQEeedq-IevvWAag"/> 
    </elements> 
    </fragments> 
</fragment:ModelFragments> 

は、実行ログです:

Starting application: 1179 
!SESSION 2017-06-01 02:10:52.203 ----------------------------------------------- 
eclipse.buildId=4.6.3.M20170301-0400 
java.version=1.8.0_121 
java.vendor=Oracle Corporation 
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_GB 
Framework arguments: -product org.eclipse.platform.ide 
Command-line arguments: -product org.eclipse.platform.ide -data C:\Users\Emmanuel\workspace/../runtime-EclipseApplication -dev file:C:/Users/Emmanuel/workspace/.metadata/.plugins/org.eclipse.pde.core/Eclipse Application/dev.properties -debug C:\Users\Emmanuel\workspace\.metadata\.plugins\org.eclipse.pde.core\Eclipse Application/.options -os win32 -ws win32 -arch x86_64 -consoleLog 

!ENTRY org.eclipse.osgi 4 0 2017-06-01 02:10:54.335 
!MESSAGE Application error 
!STACK 1 
java.lang.ArrayStoreException: org.eclipse.e4.ui.model.application.ui.menu.impl.MenuContributionImpl 
    at org.eclipse.emf.common.util.BasicEList.assign(BasicEList.java:118) 
    at org.eclipse.emf.common.util.BasicEList.addUnique(BasicEList.java:417) 
    at org.eclipse.emf.common.notify.impl.NotifyingListImpl.doAddUnique(NotifyingListImpl.java:325) 
    at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:309) 
    at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:303) 
    at org.eclipse.e4.ui.model.internal.ModelUtils.mergeList(ModelUtils.java:197) 
    at org.eclipse.e4.ui.model.internal.ModelUtils.merge(ModelUtils.java:145) 
    at org.eclipse.e4.ui.model.fragment.impl.StringModelFragmentImpl.mergeIdList(StringModelFragmentImpl.java:322) 
    at org.eclipse.e4.ui.model.fragment.impl.StringModelFragmentImpl.merge(StringModelFragmentImpl.java:300) 
    at org.eclipse.e4.ui.internal.workbench.ModelAssembler.processModelFragment(ModelAssembler.java:272) 
    at org.eclipse.e4.ui.internal.workbench.ModelAssembler.processFragmentConfigurationElement(ModelAssembler.java:162) 
    at org.eclipse.e4.ui.internal.workbench.ModelAssembler.processFragments(ModelAssembler.java:118) 
    at org.eclipse.e4.ui.internal.workbench.ModelAssembler.processModel(ModelAssembler.java:96) 
    at org.eclipse.e4.ui.internal.workbench.ResourceHandler.loadMostRecentModel(ResourceHandler.java:197) 
    at org.eclipse.e4.ui.internal.workbench.swt.E4Application.loadApplicationModel(E4Application.java:377) 
    at org.eclipse.e4.ui.internal.workbench.swt.E4Application.createE4Workbench(E4Application.java:252) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:632) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148) 
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138) 
    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:388) 
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243) 
    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:673) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1519) 
    at org.eclipse.equinox.launcher.Main.main(Main.java:1492) 
An error has occurred. See the log file 
C:\Users\Emmanuel\runtime-EclipseApplication\.metadata\.log. 

私はjava.lang.ArrayStoreExceptionためstackoveflow 関連をグーグルで閲覧した後、任意の有用な情報を見つけることができませんでした質問。私はこれを整理するためのポインタを感謝します。

答えて

0

この:

<fragments xsi:type="fragment:StringModelFragment" xmi:id="_8OBJMEZTEeehrvUiei9LJA" featurename="handlers" parentElementId="org.eclipse.e4.legacy.ide.application"> 
    <elements xsi:type="menu:MenuContribution" xmi:id="_JcJ-cEZUEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.menucontribution.0" parentId="help"> 
     <children xsi:type="menu:HandledMenuItem" xmi:id="_OSQxwEZUEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.handledmenuitem.Hello" label="Hello" iconURI="platform:/plugin/com.bodastage.e4.clock.ui/icons/sample.gif" command="_4tuLgEOQEeedq-IevvWAag"/> 
    </elements> 
</fragments> 

が許可されていないハンドラfeaturename="handlers"のリストに追加するメニューの貢献をしようとしています。メニュー項目を既存のメニューのchildrenとして追加するには、これを変更する必要があります。

+0

感謝。これは正しい方向に私を指摘した。私は最終的に正しいfeaturenameが** menuContributions **であることを知った** –

+0

実際にメニューに追加するには2つの方法があります。 menuContributionsを使うか、メニューの子に直接追加することができます。 –

0

menuContributionsのフィーチャー名をmenuContributionsに変更して解決しました。以下は変更を示すスニペットです。

<fragments xsi:type="fragment:StringModelFragment" xmi:id="_hiF-4EawEeehrvUiei9LJA" featurename="menuContributions" parentElementId="org.eclipse.e4.legacy.ide.application"> 
    <elements xsi:type="menu:MenuContribution" xmi:id="_CnpqgEaxEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.menucontribution.0" parentId="help"> 
     <children xsi:type="menu:HandledMenuItem" xmi:id="_JsBsMEaxEeehrvUiei9LJA" elementId="com.bodastage.e4.clock.ui.handledmenuitem.Hello" label="Hello" iconURI="platform:/plugin/com.bodastage.e4.clock.ui/icons/sample.gif" command="_4tuLgEOQEeedq-IevvWAag"/> 
    </elements> 
    </fragments> 

以下のリンクは有用であった:グレッグ-449 @