如何在其他插件中调用方法?
How to call method in other plugin?
我正在开发一个名为 mainPage 的 eclipse 插件,并想调用一个名为 Terminal 的插件中的方法。
我已经将Terminal添加到Bundle-ClassPath和Require-Bundle中,然后我在mainPage中调用了这样的方法
new ShowToolStoreCommandHandler().execute(null);
这个方法是打开一个window。
但是我在调用这个方法时有一个java.lang.NullPointerException。
我在终端的激活器中获取终端实例时发现方法 getDefault() returns 为 null。
那么,如何调用这个方法打开一个window?
在其他 plug-ins 中调用方法没有什么特别之处,只要它们被设计为以这种方式调用。
您提到的 class 可能是一个命令处理程序,因此它会在正确设置环境的情况下从命令处理程序服务调用。
您可以使用 IHandlerService
来执行命令处理程序:
String commandId = .... the command id
IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
handlerService.executeCommand(commandId, null);
这假定命令处理程序不需要 event
参数并且不需要任何命令参数。如果确实如此,调用将更加复杂,需要更多研究。
'commandId'可能会在plug-in的plugin.xml
中定义。
我正在开发一个名为 mainPage 的 eclipse 插件,并想调用一个名为 Terminal 的插件中的方法。
我已经将Terminal添加到Bundle-ClassPath和Require-Bundle中,然后我在mainPage中调用了这样的方法
new ShowToolStoreCommandHandler().execute(null);
这个方法是打开一个window。 但是我在调用这个方法时有一个java.lang.NullPointerException。
我在终端的激活器中获取终端实例时发现方法 getDefault() returns 为 null。
那么,如何调用这个方法打开一个window?
在其他 plug-ins 中调用方法没有什么特别之处,只要它们被设计为以这种方式调用。
您提到的 class 可能是一个命令处理程序,因此它会在正确设置环境的情况下从命令处理程序服务调用。
您可以使用 IHandlerService
来执行命令处理程序:
String commandId = .... the command id
IHandlerService handlerService = PlatformUI.getWorkbench().getService(IHandlerService.class);
handlerService.executeCommand(commandId, null);
这假定命令处理程序不需要 event
参数并且不需要任何命令参数。如果确实如此,调用将更加复杂,需要更多研究。
'commandId'可能会在plug-in的plugin.xml
中定义。