Eclipse plugin 弹出窗口:org.eclipse.jdt.ui.PackageExplorer对于Java项目不可见

Eclipse plugin 弹出窗口:org.eclipse.jdt.ui.PackageExplorer对于Java项目不可见,eclipse-plugin,Eclipse Plugin,我正在为Eclipse编写一个插件,以帮助我处理一些自定义错误和警告。通过使用向导创建一个新的插件项目开始,选择带有性质和标记的选项 这会自动在项目的上下文菜单中添加一个菜单项(弹出:org.eclipse.jdt.ui.PackageExplorer?after=additions) 这似乎适用于大多数项目。除了我需要它的项目。对于包资源管理器中的Java项目,菜单项根本不显示 我只将默认的?after?更改为?before,因此菜单项位于更适合我的位置(对于它所处理的项目) 这表明它正在P

我正在为Eclipse编写一个插件,以帮助我处理一些自定义错误和警告。通过使用向导创建一个新的插件项目开始,选择带有性质和标记的选项

这会自动在项目的上下文菜单中添加一个菜单项(弹出:org.eclipse.jdt.ui.PackageExplorer?after=additions)

这似乎适用于大多数项目。除了我需要它的项目。对于包资源管理器中的Java项目,菜单项根本不显示

我只将默认的?after?更改为?before,因此菜单项位于更适合我的位置(对于它所处理的项目)


这表明它正在PackageExplorer中处理一个非java项目

我还向ProjectExplorer添加了相同的菜单项,在那里一切正常

它不工作的项目是一个简单的java项目,它是从Eclipse“New->java project”向导新生成的。任何其他java项目也不起作用

它所处理的项目是从“插件开发->更新站点项目”向导新生成的

我试过的东西: 我知道这与我将菜单项添加到项目的上下文菜单不同,而不是文件或目录。 但是,我确实尝试过使用:

<adapt type="org.eclipse.core.resources.IResource">
  <test property="org.eclipse.core.resources.contentTypeId" value="org.eclipse.jdt.core.IJavaProject" />
</adapt>
,生成的plugin.xml使用了
selection
,我后来将其更改为
activeMenuSelection
,因为它与文档匹配,并且插件selection Spy说它实际上是什么。同样,没有变化

我认为这与不一样,但我确实尝试过使用建议的代码并玩弄它,没有运气

因此,总结一下:

这是我的第一个Eclipse插件,大部分GUI内容都是从Plug-in-Developent向导生成的。现在我希望一个真正的向导能引导我找到我想要的答案。

eclipse.org上的
页面也帮助我理解了每个标签的确切功能

因此,我认为我的问题实际上与我首先链接的问题相似()。我现在觉得自己很傻

我当前plugin.xml的相关部分:

    <visibleWhen checkEnabled="false">
      <with variable="activeMenuSelection">
        <count value="1" />
        <iterate operator="and">
          <adapt type="org.eclipse.core.resources.IResource">
            <and>
              <not>
                <test property="org.eclipse.core.resources.projectNature" value="com.mycompany.converterhelper.javaFileNature" />
              </not>
              <test property="org.eclipse.core.resources.projectNature" value="org.eclipse.jdt.core.javanature" />
            </and>
          </adapt>
        </iterate>
      </with>
    </visibleWhen>


我要感谢Calon的时间和努力:-)

您是否尝试删除plugin.xml中的com.mycompany.converterhelper.addRemoveJavaFileNature
中的“何时可见”选项?您的命令是否显示在PackageExplorer中而没有该选项?完全删除
标记会显示菜单项。但我只想在Java项目上展示它。这并不是一个解决方案,而是缩小可能原因的范围。在我看来,你的代码做了你让它做的事情。当您的项目不具有“com.mycompany.converterhelper.javaFileNature”性质且具有“org.eclipse.jdt.core.javanature”性质时,设置enabled=false。因此,所有没有“com.mycompany.converterhelper.javaFileNature”的Java项目都将从弹出窗口中删除该命令。我想我现在已经读了大约50遍了,但我仍然不明白。。。我在同一个菜单中添加了两个菜单项,“启用”和“禁用”选项,这两个选项应该是互斥的。但是对于每一个Java项目,其中一个应该是可见的(目前不是)。今晚我会尽力把它写得很好。