如何创建一个可插件的Java程序?
2022-09-01 02:55:50
我想创建一个可以用插件扩展的Java程序。我该怎么做,我应该在哪里寻找?
我有一组插件必须实现的接口,它应该在jar中。程序应该监视相对(程序)文件夹中的新jar,并以某种方式注册它们。
虽然我确实喜欢Eclipse RCP,但我认为它对于我的简单需求来说太多了。
春天也是如此,但是既然我无论如何都要看它,我不妨试试看。
但是,我仍然希望找到一种方法来尽可能简单地创建自己的插件“框架”。
我想创建一个可以用插件扩展的Java程序。我该怎么做,我应该在哪里寻找?
我有一组插件必须实现的接口,它应该在jar中。程序应该监视相对(程序)文件夹中的新jar,并以某种方式注册它们。
虽然我确实喜欢Eclipse RCP,但我认为它对于我的简单需求来说太多了。
春天也是如此,但是既然我无论如何都要看它,我不妨试试看。
但是,我仍然希望找到一种方法来尽可能简单地创建自己的插件“框架”。
我已经为我过去编写的软件做了这个,非常方便。我首先创建了一个接口,我所有的“插件”类都需要实现。然后,我使用 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();