【发布时间】:2015-08-05 15:23:21
【问题描述】:
我正在尝试使我的 Java 应用程序模块化,以便客户必须获得核心基础模块,但他/她将能够在它们出现时添加其他功能/插件,或者随着她的需求扩大。就像 NetBeans 之类的 IDE 一样。
我计划在客户端 pc 中有一个名为 modules/plugins 的子目录,其中任何插件应用程序都将包含为 .jar 文件。当用户启动应用程序时,主模块将在最后一项中包含这些其他插件,因此,例如,Stage 将在同一 scene 上同时拥有来自主模块和插件模块的按钮。
我精通elgg,它使用视图来执行此操作。借用这个,我可以有一个 HBox,例如在主模块上,它在启动应用程序时填充了来自不同插件的按钮。
我怎样才能让下面的 core_base_module.jar 调用下面插件目录中的所有插件。换句话说,我怎样才能让一个.jar 文件调用另一个.jar 文件?
示例目录结构:
main dir/---core_base_module.jar
/---plugins ---/chat.jar
/videoplayer.jar
/like.jar
/unlike.jar
/etc.jar
/etc_etc.jar
【问题讨论】:
-
@mikotak 这不是编译时设置。问题是关于在运行时加载新模块。
-
好吧,我猜你的 core_module 将不得不扫描插件目录中的插件。当您发现 jar 时,您应该知道要加载的内容(从属于您的合同的另一个类扩展而来的某种类,即您应该知道您期望什么)。类加载应该是这样的:stackoverflow.com/questions/11016092/…
-
看看这个实用程序也github.com/decebals/pf4j