我有一个我正在编写的java控制台应用程序,我希望人们能够为它编写插件,然后将这些插件分配为jar。我希望用户能够将插件(jar)放入“插件”文件夹中,重新启动应用程序,然后让插件加载并运行。我不希望用户必须指定一个类或方法来执行插件或类似的东西。动态加载jar并在其中执行任意代码
我可以将带有通配符类路径的jar加载到“plugins”目录,但我需要一些方法让这些插件通过运行一个register()
方法注册他们自己的应用程序,每个插件需要在某处定义。插件(罐子)如何指定它在哪里(包和类)它是register()
方法被定义,所以我的应用程序将知道它的调用?
我意识到OSGi可以实现这一点,但这是一个相当小的应用程序,如果存在更简单的解决方案,我宁愿不使用OSGi。
背景:
这些插件注册他们想要处理的应用程序的事件。用户将能够以每个插件为基础禁用特定事件的处理,因此这些插件的配置将存储在应用程序的数据库中。当插件注册自己时,应用程序将检查数据库以查看该插件是否存在配置,如果不存在,则会在数据库中为其创建新的默认配置。
终于得到了尝试这个,这似乎工作得很好,谢谢:) –