如何创建一个可插件的Java程序?

2022-09-01 02:55:50

我想创建一个可以用插件扩展的Java程序。我该怎么做,我应该在哪里寻找?

我有一组插件必须实现的接口,它应该在jar中。程序应该监视相对(程序)文件夹中的新jar,并以某种方式注册它们。


虽然我确实喜欢Eclipse RCP,但我认为它对于我的简单需求来说太多了。

春天也是如此,但是既然我无论如何都要看它,我不妨试试看。

但是,我仍然希望找到一种方法来尽可能简单地创建自己的插件“框架”。


答案 1

我已经为我过去编写的软件做了这个,非常方便。我首先创建了一个接口,我所有的“插件”类都需要实现。然后,我使用 Java ClassLoader 来加载这些类并创建它们的实例。

你可以这样做的一种方法是:

File dir = new File("put path to classes you want to load here");
URL loadPath = dir.toURI().toURL();
URL[] classUrl = new URL[]{loadPath};

ClassLoader cl = new URLClassLoader(classUrl);

Class loadedClass = cl.loadClass("classname"); // must be in package.class name format

这已经加载了类,现在你需要创建它的一个实例,假设接口名称是MyModule:

MyModule modInstance = (MyModule)loadedClass.newInstance();

答案 2

看看OSGi

一方面,OSGi提供了各种基础设施,用于管理,启动和做许多其他事情与模块化软件组件。另一方面,它可能太重了,无法满足您的需求。

顺便说一句,Eclipse使用OSGi来管理其插件。


推荐