RCP应用程序“命令未定义”错误

时间:2011-08-03 06:44:11

标签: eclipse-rcp

当我尝试运行应用程序时,我总是得到以下例外。除此之外,一切都很好用

java.lang.Exception
    at org.eclipse.jface.action.ExternalActionManager$CommandCallback.isActive(ExternalActionManager.java:370)
    at org.eclipse.jface.action.ActionContributionItem.isCommandActive(ActionContributionItem.java:647)
    at org.eclipse.jface.action.ActionContributionItem.isVisible(ActionContributionItem.java:703)
    at org.eclipse.jface.action.MenuManager.isChildVisible(MenuManager.java:999)
    at org.eclipse.jface.action.MenuManager.isVisible(MenuManager.java:567)
    at org.eclipse.jface.action.MenuManager.isChildVisible(MenuManager.java:999)
    at org.eclipse.jface.action.MenuManager.update(MenuManager.java:763)
    at org.eclipse.jface.action.MenuManager.update(MenuManager.java:682)
    at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:197)
    at org.eclipse.jface.action.MenuManager.createMenuBar(MenuManager.java:213)
    at org.eclipse.ui.internal.WorkbenchWindow.createDefaultContents(WorkbenchWindow.java:1069)
    at org.eclipse.ui.internal.WorkbenchWindowConfigurer.createDefaultContents(WorkbenchWindowConfigurer.java:623)
    at org.eclipse.ui.application.WorkbenchWindowAdvisor.createWindowContents(WorkbenchWindowAdvisor.java:300)
    at org.eclipse.ui.internal.WorkbenchWindow.createContents(WorkbenchWindow.java:1036)
    at org.eclipse.jface.window.Window.create(Window.java:431)
    at org.eclipse.ui.internal.Workbench$22.runWithException(Workbench.java:1211)
    at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

2 个答案:

答案 0 :(得分:3)

这意味着缺少命令定义 您会在bug reportEclipseZone中找到类似错误的示例 您应该在此例外之前加上“The command ("org.eclipse.ui.file.closeAllSaved") is undefined” (“org.eclipse.ui.file.closeAllSaved”只作为一个例子:你的情况,它可能是一个不同的命令)

在第一个的情况下,proposed patch“省略默认处理程序,因为我们没有xxx支持”。

对于第二个:

  

RCP应用程序的一个简单的解决方法是包含一个有用的   在你的一个插件中定义(或在一个单独的一个插件中)。

     

类似的东西:

categoryId="org.eclipse.ui.category.file"
id="org.eclipse.ui.file.closeAllSaved"    # replace by your missing command
name="Close All Saved"/> 

答案 1 :(得分:1)

正如VonC所说,缺少命令定义。 你应该添加这样的东西:

  <command
        name="Close All Saved"
        description="Close All Saved"
        categoryId="org.eclipse.ui.category.file"
        id="org.eclipse.ui.file.closeAllSaved">
  </command>

到plugin.xml

另外,请确保categoryId引用已定义的类别,否则您将收到如下警告:

!MESSAGE Commands should really have a category: plug-in='xxxxx', id='xxxx', categoryId='xxxxx'