【问题标题】:Eclipse conflicting handlersEclipse 冲突处理程序
【发布时间】:2013-06-15 09:47:48
【问题描述】:

在开发 Eclipse 插件时,我在 Manifest 扩展中创建了一个命令,其 id 为 crtc_v4.session 并带有默认处理程序 crtc_v4.handlers.StartSession ,我在清单中为此命令添加了一个处理程序,该处理程序根据变量启用命令crtc_v4.sessionvar.

控制台上出现的问题是:

!MESSAGE Conflicting handlers for crtc_v4.session:  {crtc_v4.handlers.StartSession@98bc5c} vs {crtc_v4.handlers.StartSession@1265d09}

但它不会阻止运行插件。我在问这个问题的解决方案,以及它是否会影响我的插件的整体性能?

编辑:

定义命令的sn-p:

 <extension
     point="org.eclipse.ui.menus">
  <menuContribution
        allPopups="false"
        locationURI="toolbar:org.eclipse.ui.main.toolbar">
     <toolbar
           id="crtc_v5.crtctoolbar">
        <command
              commandId="crtc_v5.session"
              icon="icons/neutral.png"
              label="Start Session"
              style="push">
        </command>
     </toolbar>
  </menuContribution>

定义处理程序的 sn-p :

 </extension>
      <command
        defaultHandler="crtc_v5.handlers.StartSession"
        id="crtc_v5.session"
        name="session">
  </command>
 </extension>

这是对 sessionvar 的启用:

  <extension
     point="org.eclipse.ui.handlers">
  <handler
        class="crtc_v5.handlers.StartSession"
        commandId="crtc_v5.session">
     <enabledWhen>
        <with
              variable="crtc_v5.sessionvar">
           <equals
                 value="LOGGEDIN">
           </equals>
        </with>
     </enabledWhen>
  </handler>

【问题讨论】:

  • 您能否使用定义命令和处理程序的 sn-ps 更新您的问题?另外,对 sessionvar 的启用是什么样的?
  • @PaulWebster 现在更新了

标签: eclipse-plugin eclipse-rcp handler manifest


【解决方案1】:

您已经在命令中定义了一个默认处理程序,并在 org.eclipse.ui.handlers 扩展中定义了另一个。如果您想使用 enabledWhen,只需删除 defaultHandler 属性(因为两个实例都提供相同的处理程序,crtc_v5.handlers.StartSession)。

当您希望不同的处理程序根据应用程序状态为您的命令提供行为时,您可以在 org.eclipse.ui.handlers 定义中使用 activeWhen ,但这里似乎并非如此。

【讨论】:

  • 非常感谢,这确实是个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-04
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多