java - 如何获取jar类来自

标签 java eclipse api plugins log4j2

我目前正在为服务器软件开发一个API,以便用户可以通过为其编写插件来扩展我的软件,而不是自己修改软件,并允许其他没有编程知识的用户通过添加这些插件来轻松更改软件。到目前为止,一切正常。但是,我遇到了配置问题。

你看,每个插件都有一个plugin.yml文件,存储着这4个属性: Main:这里存放的是主类 名称:这是存储插件名称的地方 版本:这是存储插件版本的地方 作者:这是存储插件作者的地方

现在,为了让插件向控制台打印一些内容,他们使用一个名为: this.getServer().getLogger().info("MESSAGE); 的函数(他们为插件扩展了另一个类,这就是为什么他们使用“this”而不是另一个类来记录)

但是,我不知道当他们调用该函数时如何获取哪个插件。我有一个 PluginSessions 的 ArrayList,事件处理程序使用它来循环运行事件函数。

我的解决方案是获取正在调用类的jar,这样我就可以从那里获取plugin.yml。但是,我不知道如何获得它,我尝试过使用 Class.forName();和一些其他代码。但由于该类在运行代码的 jar/project 中不存在,因此会抛出 ClassNotFoundException。

这里有人知道如何在不使用 Class.forName() 的情况下获取类所在的 jar 吗?谢谢! -特伦特

最佳答案

看一下Class.getResource

如果你调用 MyClass.getResource("plugin.yml") (或带有前导斜杠的“/plugin.yml”,我忘了),你会得到一个文件 URL,该 URL 指向与 MyClass 相同的 jar 中的 plugin.yml 文件。 (如果路径错误或 jar 不包含“plugin.yml”文件,则为 null。)然后,您可以打开该资源的 InputStream。在插件框架中,您可能需要使用myPluginInstance.getClass().getResource

关于java - 如何获取jar类来自,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28386422/

相关文章:

java - 为单个字符串参数传递多个值

java - 在 Eclipse 中后退调试

javascript - MVC JavaScript 获取 API 数据并发送到 Controller

android - 从 Android 将图像上传到 tumblr API

java - 有没有办法从属性文件值设置其余配置 header ?

java - 自定义异常处理 - java Web 服务

java - 如何修复 Maven 无效的结束 header

eclipse - Bazaar OS X 安装程序将可执行文件放在哪里?

ios - 带标题的 Alamofire 请求?

java - 如何使用 Maven 发布插件跳过集成测试