2015-12-22 82 views
1

我有以下情况:如何从Eclipse中的其他插件调用插件方法?

我想延长特定插件中的功能(我有它的源代码,并通过运行该项目作为打开一个新的Eclipse IDE,提供一个Eclipse应用程序启动插件功能)与一个插件BI正在写。

当我将它作为Java应用程序运行时,我的插件会运行。假设它只是在控制台中打印Hello World。我想的是,我可以调用它确实从插件A.

我做了什么功能:

  1. 我说我的插件B到插件作为插件需要插件。
  2. 我创建了一个实现Hello World-print的类的实例,并在插件A的一个方法内调用该函数(我也尝试使该方法成为静态并在不创建导致完全相同错误的实例的情况下调用该方法)。
  3. 我在插件B中创建了一个扩展点,并将它作为扩展插件添加到插件A中。我只在扩展点中设置了ID和名称。

会发生什么:

时,应在创建插件B中的类的实例,该程序与此错误崩溃:

java.lang.NoClassDefFoundError: de/name_of/plugin_b/package/ClassName 
[...] 
Caused by: java.lang.ClassNotFoundException: de.name_of.plugin_b.package.ClassName cannot be found by de.name_of.plugin_a.package_1.0.0.qualifier 

我想我失去了一些东西项重要的 - 能有人帮助我了解它是什么?

编辑2:

我刚刚读过,我必须添加“。”到类路径。似乎这样解决了这个问题!谢谢让我更深入地了解清单,greg!

我现在得到了一个不同的错误,当创建插件时,这似乎也与我连接,因为我在运行插件B作为Java应用程序时没有收到此错误。

java.lang.NoSuchMethodError: org.apache.lucene.store.FSDirectory.open(Ljava/nio/file/Path;)Lorg/apache/lucene/store/FSDirectory; 

问题是,寿,这种方法确实存在(见lucene API here)。

在清单看到,我添加了Lucene,罐子插件B.

+1

向我们展示两个插件的MANIFEST.MF。 –

+0

我编辑了两个清单到OP中。 –

回答

1

的您需要包括每一个其他插件在你的插件的Export-Package部分使用软件包的依赖关系。在MANIFEST.MF编辑器中,它位于'导出包'部分的'运行时'选项卡上。

您不需要扩展点即可完成此项工作。

+0

嘿,谢谢你的回复(再次)。 我的插件B只有一个包,我将其添加到Export-Package中。我编辑了我在OP中发现的一个问题。 –

+0

这是一个完全不同的问题。接受这个答案并提出一个新问题。 –

+0

感谢您的帮助。我会在90分钟后立即发布另一个问题,然后我可以发布另一个问题。 –

相关问题