命令使用 visibleWhen 不出现在上下文菜单中

command uses visibleWhen not appear in context menu

我想在 select Java Source Files 时添加上下文菜单命令,但是上下文菜单没有出现。
Java Source Files 的 class 类型是 CompilationUnit 我从 eclipse plugin-in spy.

得到的

这是插件扩展声明(plugin.xml):

<extension
         point="org.eclipse.ui.menus">
      <menuContribution
            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
         <command
               commandId="xml2javacode.commands.sampleCommand"
               id="xml2javacode.menus.sampleCommand"
               mnemonic="S">
            <visibleWhen>
               <with
                     variable="activeMenuSelection">
                  <iterate>
                     <instanceof
                           value="org.eclipse.jdt.core.dom.CompilationUnit">
                     </instanceof>
                  </iterate>
               </with>
            </visibleWhen>
         </command>
      </menuContribution>
   </extension>

有几个 class 叫 CompilationUnit,你选错了。

 <instanceof
     value="org.eclipse.jdt.internal.core.CompilationUnit">
 </instanceof>

有效 - 但是这是一个内部 class 所以你不应该引用它。

检查 Java 源文件的常用方法是:

<adapt type="org.eclipse.core.resources.IResource">
    <test property="org.eclipse.core.resources.contentTypeId" value="org.eclipse.jdt.core.javaSource" />
</adapt>

正在将选择调整为 IResource,然后检查内容类型 ID。