gpt4 book ai didi

Java 可扩展程序(mod/插件)

转载 作者:行者123 更新时间:2023-11-30 04:03:22 25 4
gpt4 key购买 nike

我现在正在制作一个计算机监控程序。这是在我的祖国克罗地亚(InfoKup)举办的一场比赛。我有多种选项可以将命令发送到另一台电脑,但我想要为人们提供命令扩展的可能性谁了解Java。所以我想让用户能够添加他的一些程序的自定义命令。例如类似的东西我的世界模组。我知道这是可能的,但我该怎么办这样做。

任何帮助将不胜感激。我在 GitHub 上的代码:GitHub不要介意流的事情。
这是我 friend 正在尝试的东西。

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

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

例如

    package sth.sth;

import blah.blah.*;

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

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

这是已删除问题的重复。 (我删了它)。它已关闭,但现在我改进了它。

最佳答案

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

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

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

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

插件实际执行的操作由插件实现的程序员负责。所以还没有安装安全策略。因此,它并不像您链接的帖子中接受的答案那么复杂。此外,我仍在重新工作中(这就是我链接不稳定分支的原因)。不过,由于时间有限,它还不够完美,而且我不确定它是否已经准备好在其他项目中安全使用 - 但也许您会找到可以重复使用的东西,或者至少找到一些想法。

关于Java 可扩展程序(mod/插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21438704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com