Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 plugin WizardDialog.open()抛出NullPointerException_Eclipse Plugin_Eclipse Rcp_Eclipse Wtp_Jsdt - Fatal编程技术网

Eclipse plugin WizardDialog.open()抛出NullPointerException

Eclipse plugin WizardDialog.open()抛出NullPointerException,eclipse-plugin,eclipse-rcp,eclipse-wtp,jsdt,Eclipse Plugin,Eclipse Rcp,Eclipse Wtp,Jsdt,我正在尝试在工具栏上添加NewCSSWizard。为此,我使用了平台命令框架,添加了命令和处理程序扩展点。扩展WizardHandler,但它不工作并抛出NPE。如果在方法executeHandler(ExecutionEvent)中,我创建了自己的向导—它工作得很好 公共类NewCssWizardHandler扩展了WizardHandler { @凌驾 受保护的无效executeHandler(ExecutionEvent事件) { 尝试 { IWorkbenchWindow=Handler

我正在尝试在工具栏上添加NewCSSWizard。为此,我使用了平台命令框架,添加了命令和处理程序扩展点。扩展WizardHandler,但它不工作并抛出NPE。如果在方法executeHandler(ExecutionEvent)中,我创建了自己的向导—它工作得很好

公共类NewCssWizardHandler扩展了WizardHandler
{
@凌驾
受保护的无效executeHandler(ExecutionEvent事件)
{
尝试
{
IWorkbenchWindow=HandlerUtil.getActiveWorkbenchWindowChecked(事件);
WizardDialog=新建WizardDialog(window.getShell(),new NewCSSWizard());
wizardDialog.open();
}
捕获(执行例外)
{
e、 printStackTrace();
}        
}
@凌驾
受保护的字符串getWizardIdParameterId()
{
返回IWorkbenchCommandConstants.FILE\u NEW\u PARM\u向导ID;
}
@凌驾
受保护的IWizardRegistry getWizardRegistry()
{
返回PlatformUI.getWorkbench().getNewWizardRegistry();
}
}
堆栈跟踪:

org.eclipse.e4.core.di.InjectionException:java.lang.NullPointerException
位于org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
位于org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231)
位于org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212)
位于org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
位于org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:831)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:724)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:708)
位于org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:647)
位于org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
位于org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)
位于org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3562)
位于org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3186)
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
位于org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
位于org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
位于org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
位于org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
位于org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
位于org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
位于org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
在org.eclipse.equinox.internal.app.eclipseeapphandle.run上(eclipseeapphandle.java:196)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.runApplication(eclipseeappluncher.java:110)
位于org.eclipse.core.runtime.internal.adapter.eclipseeappluncher.start(eclipseeappluncher.java:79)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:353)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:180)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
位于org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
位于org.eclipse.equinox.launcher.Main.run(Main.java:1438)
位于org.eclipse.equinox.launcher.Main.Main(Main.java:1414)
原因:java.lang.NullPointerException
位于org.eclipse.ui.ide.ide.computeSelectedResources(ide.java:1480)
位于org.eclipse.wst.css.ui.internal.wizard.NewCSSWizard.addPages(NewCSSWizard.java:48)
位于org.eclipse.jface.wizard.WizardDialog.createContents(WizardDialog.java:605)
位于org.eclipse.jface.window.window.create(window.java:431)
位于org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
位于org.eclipse.jface.window.window.open(window.java:790)
位于com.sdad.sdk.ui.actions.NewCssWizardHandler.executeHandler(NewCssWizardHandler.java:27)
位于org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:279)
位于org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
位于org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:601)
位于org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)

看起来您向
computeSelectedResources
传递了一个空参数。只需在调用该方法之前进行空检查。我假设您正在使用的代码是
NewCSSWizard.java

此链接有助于实现此功能,但没有解决问题
public class NewFileHandler extends AbstractHandler implements IHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IWorkbenchWindow window = HandlerUtil
                .getActiveWorkbenchWindowChecked(event);
        System.out.println("window ok");

        NewFileWizard nfw = new NewFileWizard();

        nfw.init(PlatformUI.getWorkbench(), new StructuredSelection());
        WizardDialog dialog = new WizardDialog(window.getShell(), nfw);
        System.out.println("new WizardDialog");
        dialog.open();
        System.out.println("dialog open");
        return null;
    }

}