您将如何为Java应用程序实现插件系统?是否有一个易于使用的(对于开发人员而言)系统可以实现以下目的:用户将其插件放入应用程序的子目录中插件可以提供配置屏幕如果使用框架,许可证是否与商业开发兼容?
3 回答

倚天杖
TA贡献1828条经验 获得超3个赞
首先,您需要一个所有插件都需要实现的接口,例如
public interface Plugin {
public void load(PluginConfiguration pluginConfiguration);
public void run();
public void unload();
public JComponent getConfigurationPage();
}
然后,插件作者应将其插件捆绑到JAR文件中。您的应用程序将打开JAR文件,然后可以使用JAR清单中的属性或JAR文件中所有文件的列表来查找实现您的Plugin接口的类。实例化该类,插件即可使用。
当然,您可能还希望实现某种沙箱操作,以使该插件在它可以做什么和不能做什么方面受到限制。我创建了一个小型测试应用程序(并向其发布了博客),该应用程序由两个插件组成,其中一个被拒绝访问本地资源。

蓝山帝景
TA贡献1843条经验 获得超7个赞
使用OSGi。
它是Eclipse插件系统的基础。Equinox是Eclipse的实现(许可的EPL),Felix是Apache Project的实现(许可的Apache Public License)。
Eclipse提供了一个具体的示例,OSGi可以涵盖您提到的要点(或者,如果您想要完整的Eclipse / SWT / JFace堆栈,则可以在Eclipse RCP之上构建应用程序)。
添加回答
举报
0/150
提交
取消