简体   繁体   English

Eclipse PluginDevelopment-Handlerclass不是由plugin.xml启动的

[英]Eclipse PluginDevelopment - Handlerclass not started by plugin.xml

Iam working at a project which shall open a View. Iam在将打开“视图”的项目中工作。 It shall be opened by the contextmenu-entry. 它应通过上下文菜单打开。 But it does not work. 但这行不通。 Everytime I open the contextmenu inside the new Eclipse Workspace, I get a Exception and it does not open the Handler someorg.handlers.ShowViewHandler 每次我在新的Eclipse工作区中打开contextmenu时,都会收到一个Exception,并且它不会打开Handler someorg.handlers.ShowViewHandler。

!MESSAGE Exception while dispatching event org.osgi.service.event.Event

I commented the plugin.xml with "what i expect it does" 我用“我期望它做什么”评论了plugin.xml。

Can anyone tell me what the problem is / why the handlerclass is not started? 谁能告诉我问题出在哪里/为什么未启动处理程序类?

<plugin>
     <extension point="org.eclipse.ui.commands">
      <command
            id="someorg.editor.ShowView"
            name="ShowView">
            <commandParameter
                  id="FeatureType"
                  name="feature type"
                  optional="false"
            />
      </command>
    </extension>

    <extension point="org.eclipse.ui.menus"><!--adds a contextmenu entry with the name "ShowtheView..."-->
        <menuContribution locationURI="popup:#TextEditorContext?after=group.find" > 
            <command
                 commandId="someorg.editor.ShowView"
                 label="ShowTheView...">
                <visibleWhen checkEnabled="false">
                    <reference definitionId="someorg.Editor.opened">
                    </reference>
                </visibleWhen>
                <parameter name="Type" value="ViewThis"/>
            </command>
        </menuContribution>
    </extension>

    <extension point="org.eclipse.ui.handlers"><!--opens the handlerclass "someorg.handlers.ShowViewHandler" where the View is computed.-->
        <handler
            class="someorg.handlers.ShowViewHandler"
            commandId="someorg.editor.ShowView">
            <activeWhen>
                <reference
                    definitionId="someorg.Editor.opened">
                </reference>
            </activeWhen>
        </handler>
    </extension>


    <!--some other (independent) declarations-->

Full Errorlog after opening context menu: 打开上下文菜单后的完整错误日志:

!ENTRY org.eclipse.equinox.event 4 0 2016-02-25 12:00:25.511
!MESSAGE Exception while dispatching event org.osgi.service.event.Event [topic=org/eclipse/e4/ui/model/ui/ElementContainer/children/ADD] {ChangedElement=org.eclipse.e4.ui.model.application.ui.menu.impl.PopupMenuImpl@cd19d0a (elementId: #TextEditorContext, tags: [menuContribution:popup, popup:#TextEditorContext, popup:someorg.EditorContext, popup:#AbstractTextEditorContext], contributorURI: null) (widget: Menu {&Undo Ctrl+Z, Re&vert File, &Save Ctrl+S, |, Quick Outline    Ctrl+O, Open Source File, Quick Outline Ctrl+O, Open Declaration    F3, Open Call Hierarchy Ctrl+Alt+H, Quick Hierarchy Ctrl+T, Open Type in Hierarchy  F4, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Open Call Hierarchy Ctrl+Alt+H, Quick Hierarchy Ctrl+T, Open Type in Hierarchy  F4, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Open with SceneBuilder, Open W&ith, Sho&w In    Alt+Shift+W, |, Cu&t    Ctrl+X, &Copy   Ctrl+C, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, &Paste    Ctrl+V, |, Rename Element   Alt+Shift+R, Validate, Validate, Validate, Extract Local Variable   Alt+Shift+L, Organize Imports   Ctrl+Shift+O, Rename Element    Alt+Shift+R, Validate, Rename Element   Alt+Shift+R, Validate, Extract Local Variable   Alt+Shift+L, Organize Imports   Ctrl+Shift+O, Rename Element    Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Rename Element   Alt+Shift+R, Validate, Validate, Validate, Validate, Validate, Validate, Validate, Validate, Validate, &Quick Fix   Ctrl+1, |, ShowTheView, Find References Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, |, Wa&tch, Build & Export FX Application, Upgrade to EclipseLink Mapping File, Upgrade JPA Document Version, Synchronize Class List, Retrieve Context, Explore, I&mport from Repository..., Register As Service...    Ctrl+Shift+F10, |, Pre&ferences...}, renderer: null, toBeRendered: true, onTop: false, visible: true, containerData: null, accessibilityPhrase: null) (label: null, iconURI: null, tooltip: null, mnemonics: null) (enabled: true) (context: popup:#TextEditorContext, variables: null), Widget=Menu {&Undo Ctrl+Z, Re&vert File, &Save Ctrl+S, |, Quick Outline    Ctrl+O, Open Source File, Quick Outline Ctrl+O, Open Declaration    F3, Open Call Hierarchy Ctrl+Alt+H, Quick Hierarchy Ctrl+T, Open Type in Hierarchy  F4, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Open Call Hierarchy Ctrl+Alt+H, Quick Hierarchy Ctrl+T, Open Type in Hierarchy  F4, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Quick Outline   Ctrl+O, Open with SceneBuilder, Open W&ith, Sho&w In    Alt+Shift+W, |, Cu&t    Ctrl+X, &Copy   Ctrl+C, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, Copy Qualified Name, &Paste    Ctrl+V, |, Rename Element   Alt+Shift+R, Validate, Validate, Validate, Extract Local Variable   Alt+Shift+L, Organize Imports   Ctrl+Shift+O, Rename Element    Alt+Shift+R, Validate, Rename Element   Alt+Shift+R, Validate, Extract Local Variable   Alt+Shift+L, Organize Imports   Ctrl+Shift+O, Rename Element    Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Validate, Rename Element Alt+Shift+R, Validate, Rename Element   Alt+Shift+R, Validate, Validate, Validate, Validate, Validate, Validate, Validate, Validate, Validate, &Quick Fix   Ctrl+1, |, ShowTheView..., Find References  Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, Find References   Ctrl+Shift+G, |, Wa&tch, Build & Export FX Application, Upgrade to EclipseLink Mapping File, Upgrade JPA Document Version, Synchronize Class List, Retrieve Context, Explore, I&mport from Repository..., Register As Service...    Ctrl+Shift+F10, |, Pre&ferences...}, AttName=children, NewValue=org.eclipse.e4.ui.model.application.ui.menu.impl.HandledMenuItemImpl@6a2e7d2d (elementId: someorg.Editor.ShowView, tags: [], contributorURI: null) (widget: MenuItem {ShowTheView}, renderer: org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer@40e420fe, toBeRendered: true, onTop: false, visible: true, containerData: null, accessibilityPhrase: null) (label: ShowTheView..., iconURI: null, tooltip: null, enabled: true, selected: false, type: Push) (mnemonics: null) (wbCommand: null), EventType=ADD, Position=92} to handler org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler@60cb098b
!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.ui.internal.di.UIEventObjectSupplier$UIEventHandler$1.run(UIEventObjectSupplier.java:56)
    at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)
    at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
    at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
    at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)
    at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:53)
    at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
    at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
    at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
    at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
    at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
    at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85)
    at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
    at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
    at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:249)
    at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:356)
    at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:341)
    at org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord.mergeIntoModel(ContributionRecord.java:250)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.processAddition(MenuManagerRenderer.java:554)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.generateContributions(MenuManagerRenderer.java:529)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.processContributions(MenuManagerRenderer.java:494)
    at org.eclipse.ui.internal.PopupMenuExtender.addMenuContributions(PopupMenuExtender.java:409)
    at org.eclipse.ui.internal.PopupMenuExtender.menuAboutToShow(PopupMenuExtender.java:381)
    at org.eclipse.jface.action.MenuManager.fireAboutToShow(MenuManager.java:333)
    at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:466)
    at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:461)
    at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:493)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:255)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1137)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1118)
    at org.eclipse.swt.widgets.Control.WM_INITMENUPOPUP(Control.java:5023)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4691)
    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.TrackPopupMenu(Native Method)
    at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:262)
    at org.eclipse.swt.widgets.Display.runPopups(Display.java:4221)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3763)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
    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 org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139)
    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(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    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.commands.SlaveCommandService.registerElementForCommand(SlaveCommandService.java:311)
    at org.eclipse.ui.internal.commands.SlaveCommandService.registerElementForUpdate(SlaveCommandService.java:395)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.fill(HandledContributionItem.java:324)
    at org.eclipse.jface.action.MenuManager.doItemFill(MenuManager.java:724)
    at org.eclipse.jface.action.MenuManager.update(MenuManager.java:806)
    at org.eclipse.jface.action.MenuManager.update(MenuManager.java:665)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.scheduleManagerUpdate(MenuManagerRenderer.java:1164)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.processContents(MenuManagerRenderer.java:636)
    at org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer.subscribeTopicChildAdded(MenuManagerRenderer.java:313)
    at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
    ... 68 more

I think this is because you are specifying the wrong id for your mandatory command parameter. 我认为这是因为您为强制性命令参数指定了错误的ID。

In org.eclipse.ui.commands you declare the parameter as org.eclipse.ui.commands ,将参数声明为

 <commandParameter
        id="FeatureType"
        name="feature type"
        optional="false"

so the id is FeatureType 所以编号是FeatureType

but in org.eclipse.ui.menus you use: 但在org.eclipse.ui.menus使用:

<parameter name="Type" value="ViewThis"/>

the name does match. name确实匹配。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM