用Java创建插件系统

时间:2011-10-29 03:02:31

标签: java plugins system

我正在尝试使用java制作游戏,我需要一个服务器的插件系统......

如何制作一个名为plugins的文件夹,用户可以直接删除jar文件,我可以同时调用这些jar文件中的函数?

这暗示一个社区会制作我不知道的插件(所以我需要让它运行所有插件,即使我不知道插件名称)

(如果我不需要像jspf一样使用其他人的框架,我将不胜感激)

1 个答案:

答案 0 :(得分:13)

编写自己的插件基础架构很有趣,但完全不必要。这是一个已经解决的问题,你不会写出比已经存在并且在现场证明的更高质量的问题。我会说你选择你的战斗。

我之前尝试过JSPF,发现它非常容易使用。这来自那些已经完成完全你想要做的事情的人:我已经制作了自己的插件基础设施(基本上是为了同一目的:从动态加载迷你游戏) ,自己编写类加载和框架。如果我再次这样做,我会毫不犹豫地使用像JSPF这样的框架。

要从符合特定界面的目录(例如Game)中加载jar中的所有类,它就像以下一样简单:

PluginManager pm = PluginManagerFactory.createPluginManager();
pm.addPluginsFrom(new File("plugins/").toURI());

Collection<Game> games = new PluginManagerUtil(pm).getPlugins(Game.class);

IIRC对Game的实施者的唯一要求是使用@PluginImplementation注释标记。

修改

然后:

for ( Game game : games ) {
   game.someMethod();
}