【发布时间】:2010-05-10 16:50:43
【问题描述】:
我有一个希望注册外部模块的 Java 项目。这些模块:
- 在主项目中实现特定接口
- 打包成一个 uni-jar(连同任何依赖项)
- 包含一些人类可读的元信息(如模块名称)。
我的主项目需要能够在运行时加载(例如,使用它自己的类加载器)任何这些外部模块。我的问题是:将这些模块注册到主项目的最佳方式是什么(我更愿意保留这个 vanilla Java,而不是使用任何第三方框架/库来解决这个孤立的问题)?
我目前的解决方案是在主项目中保留一个 .properties 文件,其中 key=name, value=class |delimiter|人类可读的名称(或协调两个 .properties 文件以避免分隔符解析)。在运行时,主项目加载到 .properties 文件中,并使用它找到的任何条目来驱动类加载器。
这对我来说很奇怪。有更好的方法吗?
【问题讨论】: