在开发eclipse插件时,我在带有id crtc_v4.session的Manifest扩展中使用默认处理程序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}
Run Code Online (Sandbox Code Playgroud)
但它不会阻止运行插件.我问的是这个问题的解决方案,以及它是否会影响我的插件的性能?
编辑:
定义命令的代码段:
<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>
Run Code Online (Sandbox Code Playgroud)
定义处理程序的代码段:
</extension>
<command
defaultHandler="crtc_v5.handlers.StartSession"
id="crtc_v5.session"
name="session">
</command>
</extension>
Run Code Online (Sandbox Code Playgroud)
这是对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>
Run Code Online (Sandbox Code Playgroud)