Java pluginable application 消费者如何加载接口?

Java pluginable application how does consumer load interface?

我正在创建一个小爱好 Java task/todo 应用程序。我希望能够为它编写插件,它将存储在某个目录中,可能在 myapplication.jar.

旁边的 plugins 目录中

我对如何加载这些插件有一些想法,我想编写插件创建者可以使用的接口,例如 SomeActionInterface,实现后允许插件向 SomeAction 添加功能.

我的问题是,SomeActionInterface 去了哪里,插件创建者将如何访问所述界面?

界面是放在用户应该加载到类路径中的主 myapplication.jar 中,还是放在单独的 myapplication-plugininterfaces.jar 中?

通常你会公开 SPI and API 插件作者可以用来实现他们的代码。通常这些 类 被打包为一个单独的 JAR,这允许构建插件的依赖性最小。

您可以探索一些很好的插件架构示例: