我有以下情况:如何从Eclipse中的其他插件调用插件方法?
我想延长特定插件中的功能(我有它的源代码,并通过运行该项目作为打开一个新的Eclipse IDE,提供一个Eclipse应用程序启动插件功能)与一个插件BI正在写。
当我将它作为Java应用程序运行时,我的插件会运行。假设它只是在控制台中打印Hello World。我想的是,我可以调用它确实从插件A.
我做了什么功能:
- 我说我的插件B到插件作为插件需要插件。
- 我创建了一个实现Hello World-print的类的实例,并在插件A的一个方法内调用该函数(我也尝试使该方法成为静态并在不创建导致完全相同错误的实例的情况下调用该方法)。
- 我在插件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.
向我们展示两个插件的MANIFEST.MF。 –
我编辑了两个清单到OP中。 –