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