当前位置: 首页 > 知识库问答 >
问题:

Eclipse WST打开新XML向导抛出java.lang.NullPointerException

诸葛煜
2023-03-14

我正在使用我在internet上找到的代码打开WST向导,该向导有助于创建一个新的XML文件。

public  void openWizard(String id) {
    // First see if this is a "new wizard".
    IWizardDescriptor descriptor = PlatformUI.getWorkbench()
      .getNewWizardRegistry().findWizard(id);
    // If not check if it is an "import wizard".
    if  (descriptor == null) {
      descriptor = PlatformUI.getWorkbench().getImportWizardRegistry()
      .findWizard(id);
    }
    // Or maybe an export wizard
    if  (descriptor == null) {
      descriptor = PlatformUI.getWorkbench().getExportWizardRegistry()
      .findWizard(id);
    }
    try  {
      // Then if we have a wizard, open it.
      if  (descriptor != null) {
        IWizard wizard = descriptor.createWizard();
        IWorkbenchWindow win = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        WizardDialog wd = new  WizardDialog(win.getShell(), wizard);
        wd.setTitle(wizard.getWindowTitle());
        wd.open();


      }
    } catch  (CoreException e) {
      e.printStackTrace();
    }
   }

我还定义了向导的id:

String XML_WIZARD_ID= "org.eclipse.wst.xml.ui.internal.wizards.NewXMLWizard";

我将此函数调用为:

openWizard(XML_WIZARD_ID);

这不起作用,并在Eclipse的内部代码中抛出java.lang.NullPointerException。

我想知道是什么导致了这个问题。

共有1个答案

彭仲卿
2023-03-14

你在网上找到的代码是不完整的。新建向导、导入向导和导出向导实现iWorkBenchWizard,并要求在显示向导之前调用init方法:

public void init(IWorkbench workbench, IStructuredSelection selection)

NullPointerException是因为尚未设置所选内容。

因此,在创建向导之后,在传递到WizardDialog/code>之前,您需要执行以下操作:

if (wizard instanceof IWorkbenchWizard) {
   ((IWorkbenchWizard)wizard).init(workbench, selection);
}

其中selection是当前所选内容或structuredSelection.empty,但不是null。

 类似资料:
  • 导出向导 让你从表、视图或查询结果导出数据到任何现有的格式。你可以保存设置成设置文件用作设置计划。注意:Navicat Essentials 只支持导出基于文本的文件,例如 TXT、CSV、HTML、XML 和 JSON 文件。 要打开导出向导,从对象列表工具栏点击 导出向导。 设置导出文件格式(步骤 1) 为目标文件选择一个有效的导出格式。 注意: Excel 文件格式是根据你的计算机里安装的

  • 在我的RCP应用程序中,当我关闭并重新打开PyDev项目时,PyDev会在控制台上抛出一个异常,抱怨项目资源不存在。之后一切似乎都能正常工作,但我当然希望避免向我的用户显示一个虚假的异常。 通过对堆栈跟踪的导航,我可以看出,PyDev的内容提供者希望项目资源存在,但它不存在。当我检测到一个项目关闭时,也许我应该调用PyDev中的某个API?还是这是个窃听器?我在5.1.2版本上注意到了这个问题,但

  • 今天我有点不高兴,看,我正在尝试运行我的代码,却得到了一个NullPointerException。异常中的线索让我找到了这个函数: SwingConsole会有这样的代码: 这有点奇怪,考虑到我正在使用相同的方法打开另一个框架,在这个函数中是具体的: 我会给你们留下GUIJuego框架的粘贴盒,因为在这里发布它有点过分:http://pastebin.com/LSXbc7KE,也要有另一个框架的

  • “导出向导”让你从表、集合、视图或查询结果导出数据到任何可用的格式。你可以将设置保存为一个配置文件以供将来使用或用作设置自动运行任务。若要打开导出向导窗口,请在对象工具栏点击“导出向导”。 【注意】Navicat Essentials 版只支持导出纯文本格式的文件,例如 TXT、CSV、HTML、XML、SQL 和 JSON。

  • “导出向导”让你从表、集合、视图或查询结果导出数据到任何可用的格式。你可以将设置保存为一个配置文件以供将来使用或用作设置自动运行任务。若要打开导出向导窗口,请在对象工具栏点击 、 或 。 【注意】Navicat Essentials 版只支持导出纯文本格式的文件,例如 TXT、CSV、HTML、XML、SQL 和 JSON。

  • “导出向导”让你从表、集合、视图或查询结果导出数据到任何可用的格式。你可以将设置保存为一个配置文件以供将来使用或用作设置自动运行任务。若要打开导出向导窗口,请在对象工具栏点击“导出向导”。 【注意】Navicat Essentials 版只支持导出纯文本格式的文件,例如 TXT、CSV、HTML、XML、SQL 和 JSON。