Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse 动态菜单分配-获取警告_Eclipse_Plugins_Warnings - Fatal编程技术网

Eclipse 动态菜单分配-获取警告

Eclipse 动态菜单分配-获取警告,eclipse,plugins,warnings,Eclipse,Plugins,Warnings,我正在使用dynamicMenuContribution并收到一条警告,提示我的两个引用标识符“找不到”。尽管这一贡献起了作用。这些警告使我感到厌烦 我在我的一个插件中定义了一个CompoundContributionItem实现。基本上是这样的: public class ViewerHistoryMenuItems extends CompoundContributionItem implements IExecutableExtension { private stat

我正在使用dynamic
MenuContribution
并收到一条警告,提示我的两个引用标识符“找不到”。尽管这一贡献起了作用。这些警告使我感到厌烦

我在我的一个插件中定义了一个
CompoundContributionItem
实现。基本上是这样的:

public class ViewerHistoryMenuItems extends CompoundContributionItem
    implements IExecutableExtension { 

    private static final String PARAM_TYPE = "type";
    private static final String PARAM_COMMAND = "command";

    // some fields

    public void setInitializationData(final IConfigurationElement config,
            final String propertyName, final Object data) {
        /* set fields */
    }

    protected final IContributionItem[] getContributionItems() {
        /* create Items */ 
    }
}
在其他插件中,我通过声明以下内容来使用这个
ContributionItem
实现:

<menuContribution locationURI="menu:mylocationUri">
    <dynamic id="myId">
        <class class="ViewerHistoryMenuItems">
            <parameter
                     name="type"
                     value="someValue">
            </parameter>
            <parameter
                     name="command"
                     value="someCommandId">
            </parameter>
        </class>
    </dynamic>
    <command
        commandId="someCommandId"
        icon="anIcon.png">
    </command>
</menuContribution>
我错过了什么?有什么想法吗,为什么我会收到这个警告


PS:将两个字段
PARAM_类型
PARAM_命令
public

设置为公共字段没有帮助,我认为这与类中存在内部字段无关

如果您看到类似的错误(不相同,因为它包括
annotationType
),则更正涉及所述参考标识符的定义:

Referenced identifier 'com.atlassian.connector.eclipse.cruicible.ui.comment.annotation' 
in attribute 'annotationType' cannot be found
固定为:

+   <extension
+         point="org.eclipse.ui.editors.annotationTypes">
+      <type
+            markerType="com.atlassian.connector.eclipse.crucible.ui.com.atlassian.connector.eclipse.cruicible.ui.comment.marker"
+            name="com.atlassian.connector.eclipse.cruicible.ui.comment.annotation">
+      </type>
+   </extension>
+   <extension
+         id="com.atlassian.connector.eclipse.cruicible.ui.comment.marker"
+         point="org.eclipse.core.resources.markers">
+   </extension>
可执行扩展或命令的参数——取决于它在扩展中的位置

  • 名称-名称是要传递给可执行扩展的参数的名称,或者是命令参数的标识符
  • -此参数要传递的值

您需要在name属性中引用您的
plugin.xml

中其他地方的id,当然可以,VonC。我们开始:

在动态声明(见上文)中有两个参数引用

<parameter
  name="type"
  value="someValue">
</parameter>
<parameter
  name="command"
  value="someCommandId">
</parameter>

这两个参数要传递给命令本身。命令声明在同一plugin.xml中,但是没有声明这两个commandParameters

我所做的是添加这些缺少的commandParameters,解决缺少的引用,这在警告中得到了明确的说明

<command
  categoryId="aCategory"
               id="someCommandId"
               name="%theName">
  <commandParameter
    id="type"
    name="type"/>
  <commandParameter
    id="command"
    name="command">
  </commandParameter>
</command>

因此,你说的“更正涉及到所述参考标识符的定义”是绝对正确的。问题只是在哪里我必须定义什么。
我想,我没有考虑这个例子中最明显的参数。

它说“名称或者是参数的名称…”所以我想我使用了它,并将一个参数称为“type”,另一个参数称为“command”。但是我想,我必须更多地考虑你深刻的答案,VonC。@pimpf0r:就是这样:我不确定“参数名”是否可以引用任何内部字段类。在声明模式下,例如
plugin.xml
,我希望参数在所述
plugin.xml
中的其他地方定义好,我想我找到了“其他地方”。本例中的其他地方指:定义/声明引用命令的位置。我在动态声明中引用了同一plugin.xml中的命令。但是添加的参数没有在那里声明。谢谢你的帮助,沃克。high5@pimpf0r:谢谢你的反馈。您能否将您需要添加到
plugin.xml
中以解决此问题的内容发布为答案?
<parameter
  name="type"
  value="someValue">
</parameter>
<parameter
  name="command"
  value="someCommandId">
</parameter>
<command
  categoryId="aCategory"
               id="someCommandId"
               name="%theName">
  <commandParameter
    id="type"
    name="type"/>
  <commandParameter
    id="command"
    name="command">
  </commandParameter>
</command>