我正在做一个测试项目,并遵循Vogella's RCP tutorial。之后,我对其进行了一些更改,例如。创建了一个JFace TreeView。现在,我希望如果用户双击TreeView元素,则会打开另一个Part。我有命令,但是,我不知道如何调用它。如果您看一下该教程,您可能会注意到它仅使用部件而不使用视图,并且我没有启动工作台的Application.java类。因此,以下方法对我不起作用:


IHandlerService handlerService = (IHandlerService) viewer.getSite().getService(IHandlerService.class);
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IHandlerService handlerService = (IHandlerService)window.getService(IHandlerService.class);
handlerService.executeCommand(cmdID, null);


他们俩都给我NullPointerException

最佳答案

这个旧的备用数据库怎么样:

Command command = ((ICommandService)getSite().getService(ICommandService.class)).getCommand(commandId);
...
final Event trigger = new Event();
ExecutionEvent executionEvent = ((IHandlerService)getSite().getService(IHandlerService.class)).createExecutionEvent(command, trigger);
command.executeWithChecks(executionEvent);

10-07 13:07