Java可扩展程序(mods / plugins)

时间:2014-01-29 17:48:28

标签: java swing extend

我正在制作计算机监控计划。 这是我的国家克罗地亚(InfoKup)的比赛。 我有几个选项可以将命令发送到另一台PC,但我 想为人们提供命令扩展的可能性 谁懂Java。所以我想让用户能够添加一些他的 该程序的自定义命令。比如像 Minecraft mods。我知道这是可能的,但我怎么会这样做 这样做。

非常感谢任何帮助。我在GitHub上的代码:GitHub 不介意流的东西。
这是我朋友正在尝试的东西。

目前我可以将弹出窗口发送到另一台PC。如果扩展程序制造商知道发送cmd命令的代码并想要添加该功能,该怎么办?他进行了扩展并将其放在扩展文件夹中。我们有了新的可能性。

基本上我想要的是用户在“mod / extension / whatever”文件夹中删除“mod / extension / whatever”,程序会加载它并将所有按钮声明在类中在GUI中,以及它们的功能。

e.g。

    package sth.sth;

    import blah.blah.*;

    public class ClassSTH extends SchoolarButton{
     public ClassSTH(String params){
      super(params);
     }

     @Override
     public void OnClick(){
      doStuff();
     }
    }

这是已删除问题的副本。 (我已经把它删了)。它已关闭,但现在我改进了它。

1 个答案:

答案 0 :(得分:2)

根据您的要求,我会发布一些关于little plugin framework的信息。当我继续大学实验室的结果只是为了好玩时,目前有一些变化。它支持一些基本的注入机制和使用javassist字节操作框架的代码操作。我目前使用这个插件框架来学习和测试类加载行为(委托加载,使用加载类的策略,操作单例到弱单体,......)。接下来,我想冒险卸载枚举,因为它们目前会产生内存泄漏。

插件机制基于IPlugin中的简单接口PluginFramework/PluginInterface,它只定义了一个execute()方法。接口的实现可以直接放在base-directory的plugin-subdirectory中,也可以放在jar(首选的)中,它也必须放在plugin-subdirectory中。插件在应用程序启动时自动加载,或者将jar拖放到plugin目录中,或者使用简化的类似OSGi的load命令。

框架本身提供了一些操作,例如list列出了所有当前加载的插件,exec执行某个插件,loadunload希望是自我解释。出于测试原因,还有一个gc命令以某种方式强制进行垃圾收集(因为我正在使用堆转储来识别可能的内存泄漏)。

此外,您可以在插件jar的MANIFEST.MF中定义要导出的类或插件所依赖的类。如果之前加载了所有依赖类,它将只加载插件(尽管它显示在可用插件列表中,如果并非所有类都可用且插件因此等待依赖类)。导出的类可以被需要它们的其他插件进一步使用(如上所述)。

插件实际上做了什么,留给插件实现的程序员。因此尚未安装任何安全策略。因此,它没有您所链接帖子的接受答案那么复杂。而且,我还在进行重新工作(这就是为什么我将不稳定的分支联系起来)。虽然,由于时间有限,它尚不完美,我不确定它是否已经准备好在其他项目中安全使用 - 但也许你找到了一些你可以重复使用或者至少找到一些想法的东西。 / p>