java - Eclipse PluginDevelopment - Handlerclass 未由plugin.xml 启动

标签 java eclipse plugins popupmenu

我正在从事一个将打开 View 的项目。它应通过上下文菜单条目打开。但这不起作用。 每次我在新的 Eclipse 工作区中打开上下文菜单时,都会收到异常,并且它不会打开处理程序 someorg.handlers.ShowViewHandler

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

我用“我期望它做什么”来评论plugin.xml

谁能告诉我问题是什么/为什么处理程序类没有启动?

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

打开上下文菜单后的完整错误日志:

!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

最佳答案

我认为这是因为您为强制命令参数指定了错误的 id。

org.eclipse.ui.commands中,您将参数声明为

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

所以id是FeatureType

但在 org.eclipse.ui.menus 中您使用:

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

名称确实匹配。

关于java - Eclipse PluginDevelopment - Handlerclass 未由plugin.xml 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623948/

相关文章:

javascript - "next"和 "previous"按钮在此触摸 slider 插件中不起作用

asp.net-mvc - 如何将 ASP.NET MVC 用户控件构建到类库中

ruby-on-rails - Rails 3.2 升级 - 供应商/插件问题

java - 自签名根 CA 不适用于 Java

java - 将焦点设置为 JList 并将光标置于 textField swing java 自动完成上

java - java中txt文件中字符的出现

c++ - Mac C/C++ 上的 Eclipse

java - apache cxf wsdl2java 无法生成类型->访问被拒绝

java - 写入行时 eclipse(ADT) 崩溃包括 "R."

java - Mac 版 IBM Websphere