如何在其他插件中调用方法?

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中定义。