Java 如何在Eclipse中从另一个插件调用插件方法?

Java 如何在Eclipse中从另一个插件调用插件方法?,java,eclipse,plugins,eclipse-plugin,Java,Eclipse,Plugins,Eclipse Plugin,我的情况如下: 我想用我正在编写的插件B扩展给定插件a的功能(我有它的源代码,并通过将项目作为Eclipse应用程序运行来启动它,该应用程序打开一个新的Eclipse IDE,该IDE提供插件功能) 我的插件在作为Java应用程序运行时确实运行。假设它只是在控制台中打印Hello World。我想要的是,我可以从插件A调用这个函数 我所做的: 我将我的插件B添加到插件中,作为所需的插件插件 我创建了一个实现Hello World打印的类的实例,并在插件a的方法中调用了该函数(我还尝试使该方法成为

我的情况如下:

我想用我正在编写的插件B扩展给定插件a的功能(我有它的源代码,并通过将项目作为Eclipse应用程序运行来启动它,该应用程序打开一个新的Eclipse IDE,该IDE提供插件功能)

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

我所做的:

  • 我将我的插件B添加到插件中,作为所需的插件插件
  • 我创建了一个实现Hello World打印的类的实例,并在插件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:

    我刚刚读到我必须在类路径中添加“.”。看来这个问题解决了!谢谢你让我更深入地了解清单,格雷格

    我现在确实得到了一个不同的错误tho,这似乎也与我在创建插件时出错有关,因为我在作为Java应用程序运行插件B时没有得到这个错误

    java.lang.NoSuchMethodError: org.apache.lucene.store.FSDirectory.open(Ljava/nio/file/Path;)Lorg/apache/lucene/store/FSDirectory;
    
    但问题是,这种方法确实存在(请参阅)


    如清单所示,我将lucene JAR添加到插件B的依赖项中。

    您需要将其他插件使用的每个包都包含在插件的导出包中。在MANIFEST.MF编辑器中,这位于“导出的包”部分的“运行时”选项卡上


    你不需要一个扩展点来完成这项工作。

    为我们展示这两个插件的MANIFEST.MF。我将这两个清单编辑到了OP中。嘿,再次感谢你的回复。我的插件B只有一个包,我将它添加到导出包中。我编辑了我在作品中发现的一个问题。这是一个完全不同的问题。接受此答案并提出新问题。感谢您的帮助。90分钟后我会尽快发布另一个问题,之后我可以发布另一个问题。