当前位置: 首页 > 面试题库 >

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

单于钊
2023-03-14
问题内容

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

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

尽管我确实喜欢Eclipse RCP,但我认为这对于我的简单需求来说实在太多了。

对于Spring同样适用,但是既然我还是要研究它,我不妨尝试一下。

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


问题答案:

我已经为过去编写的软件完成了此操作,非常方便。我首先创建一个接口,该接口是我所有“插件”类都需要实现的。然后,我使用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();


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

  • 问题内容: 我已经在JCreator中编写了Java程序,一切都已完成,但是我想从中创建一个可执行文件,即,我不想通过加载Java类并编译然后执行来运行程序,而是将其作为独立的可执行文件。 最快的方法是什么? 问题答案: 你可以使用SDK附带的jar工具,并创建该程序的可执行版本。 这就是完成的方式。 我将从命令提示符中发布结果,因为它更容易,但是使用JCreator时也应如此。 首先创建你的程序

  • 问题内容: 我想创建一个可以分为多个模块的应用程序,它们各自具有路由功能。用户可以从应用程序主模块打开和关闭这些模块。 我是否必须加载所有模块并根据用户是否已订阅禁用该模块。我认为这会减慢应用程序的加载,因为加载了所有模块代码并在应用程序引导时注入。 还有其他替代方法可以解决此问题吗? 问题答案: 应该为主要模块提供已启用模块的列表: 显然,无法正常加载array ,因为此时应用程序尚未启动。XH

  • 当前,如果我使用两个按钮“add”和“remove”,然后在recyclerview上执行相应的操作(和,则动画效果很好。 如果我以编程方式循环数据集并再次使用添加项,我不会看到任何动画。我只是看到所有的项目几乎同时出现。 如果我使用具有线性延迟的Asynctasks,然后添加/删除中的项,仍然看不到任何动画。此外,如果多个insert线程等待所有remove线程完成(没有地方让remove线程运

  • 问题内容: 有没有办法以不可反向工程的格式部署Java程序? 我知道如何将应用程序转换为可执行的JAR文件,但是我想确保代码不会被反向工程,或者至少不会轻易进行反向工程。 对源代码的混淆不算在内……这使理解代码变得更加困难,但并没有将其隐藏。 完成程序后,我仍然可以访问原始源,因此维护应用程序将不是问题。如果应用程序是分布式的,我不希望任何用户都能对其进行反编译。混淆并不能实现这一点,因为用户仍然

  • 问题内容: 我正在用Java编写软件,我快要完成了,我想知道我们如何创建一个可以工作30天的试用版,因为我会将其发送给一些公司 因此,如何使其像共享软件或试用软件一样,我们还能阻止对jar文件中的.class的访问吗? 谢谢 问题答案: 有一种名为Rampart的产品,可让您为Java应用制作试用版。只需几分钟,效果很好。 您可以在http://Rampartlicensing.com上找到它