Percy

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

java

我想创建一个可以用插件扩展的Java程序。我该怎么做?我应该在哪里寻找?
我有一组插件必须实现的接口,它应该在一个jar中。程序应该在relative(相对于程序)文件夹中观察新的jar并以某种方式注册它们。
虽然我确实喜欢EclipseRCP,但我认为它对于我的简单需求来说太多了。
春天也是一样,但既然我无论如何都要看,我还是试试看吧。
不过,我还是希望能找到一种尽可能简单的方法来创建我自己的插件“框架”。


阅读 253

收藏
2020-12-05

共1个答案

一尘不染

我曾经为我以前写过的软件做过这个,非常方便。我首先创建了一个接口,我所有的插件类都需要实现这个接口。然后我使用Java类加载器加载这些类并创建它们的实例。
你可以这样做:

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();
2020-12-05