Eclipse plugin 发生处理程序冲突。这可能会禁用某些命令

Eclipse plugin 发生处理程序冲突。这可能会禁用某些命令,eclipse-plugin,eclipse-rcp,eclipse-pde,Eclipse Plugin,Eclipse Rcp,Eclipse Pde,我希望能够控制何时可以在工具栏中启用特定命令。目前这在我的plugin.xml文件中: <extension point="org.eclipse.ui.commands"> <command defaultHandler="my.plugin.handler.Terminate" description="Terminate session" id="my.plugin.terminate" nam

我希望能够控制何时可以在工具栏中启用特定命令。目前这在我的
plugin.xml
文件中:

<extension
     point="org.eclipse.ui.commands">
  <command
        defaultHandler="my.plugin.handler.Terminate"
        description="Terminate session"
        id="my.plugin.terminate"
        name="Terminate">
  </command>
</extension>
<extension
     point="org.eclipse.ui.commandImages">
  <image
        commandId="my.plugin.terminate"
        icon="icons/terminate.gif">
  </image>
</extension>
  <extension point="org.eclipse.ui.menus">
  <menuContribution locationURI="toolbar:my.plugin.views.RuntimeSessionsView">
     <command
           commandId="my.plugin.terminate"
           disabledIcon="icons/terminate_dis.gif"
           icon="icons/terminate.gif"
           style="push">
     </command>
</menuContribution>
</extension>
<extension
     point="org.eclipse.ui.handlers">
  <handler
        class="my.plugin.handler.Terminate"
        commandId="my.plugin.terminate">
     <enabledWhen>
        <with
              variable="canTerminate">
           <equals
                 value="true">
           </equals>
        </with>
     </enabledWhen>
  </handler>
</extension>
当前,
my.plugin.terminate
命令被禁用,我收到此错误消息。如果我删除最后一个扩展点(“org.eclipse.ui.handlers”),它将消失,但是
my.plugin.terminate
命令将再次启用


➤ 我想要实现的是能够控制此命令的启用/禁用状态。如何执行此操作?

您已经在命令默认处理程序和处理程序扩展点中指定了相同的处理程序。因为它们都是活动的,所以会产生冲突

不要指定默认的处理程序

!ENTRY org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE A handler conflict occurred.  This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2015-03-11 11:59:05.237
!MESSAGE Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)
WARNING 15-03-11,11:59:05 (0) Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)
  Conflict for 'my.plugin.terminate':
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)
HandlerActivation(commandId=my.plugin.terminate,
    handler=my.plugin.handler.Terminate,
    expression=,sourcePriority=0)