使用Java中的插件支持开发应用程序

时间:2015-08-25 13:46:56

标签: java

我一直在研究如何开发可以加载插件的应用程序。 到目前为止,我已经看到这可以通过定义一个接口来实现,并让插件实现它。

但是,我目前的问题是如何在Jars中打包时加载插件。有没有“最好的”方法呢?

我正在考虑的当前逻辑是让每个插件和他们的Jar内部寻找实现接口的类。但我不知道如何进行这样的查找。我认为这个逻辑可能不是很好,但我找不到关于这个特定主题的任何有用信息。

** Edit1:** 添加更多信息: 预期的插件将是包含在主应用程序的Jar所在子目录中的Jar文件,如下所示:

应用程序的文件夹
| - Main_Application.jar
| - 插件
| - Plugin1.jar
| - Plugin2.jar
| - Steve's_plugin.jar

等等。

我期望Application能够在运行时加载文件夹中的所有插件。所以在代码中,它只会知道插件的文件夹应该存在,并且在这样的文件夹中应该有Jars。

假设我有一个这样的插件界面:

interface Plugin
{
    public void run();
}

插件将由实现此类接口的类标识,如此

class Plugin1 implements Plugin
{
    //attributes and other methods
    @override
    public void run()
    {
        //something happens here
    }
}

class Plugin2 implements Plugin
{
    //attributes and other methods
    @override
    public void run()
    {
        //something happens here
    }
}

应用程序应该只编译一次,并且能够在执行时加载添加到文件夹的任何插件。 为了使Application能够加载任何插件,我是否需要建立Jar内容的规则,如包名称和实现接口的类?或者预计实现插件接口的类可以在Jar中的任何包中,并且有任何名称?

这是我想用这些插件做的更通用的方法。简而言之,我打算构建一个具有选项卡的应用程序,每个插件将提供每个选项卡的界面和功能。我正在尝试这个,因为我希望能够单独维护每个选项卡,并且不希望重新编译整个应用程序,因为只有一个组件的更改根本不会影响其他组件。

1 个答案:

答案 0 :(得分:0)

非常老的问题,但如果有人搜索仍然有用。.添加到接受的答案中,