java - 从主应用程序访问插件 jar 中的资源文件

标签 java jar embedded-resource

我正在开发一个主应用程序,其功能可以通过包含插件的 jar 文件进行扩展。当我的应用程序运行时,它只是检查插件的文件夹,然后加载在那里找到的类并将它们注册到我的应用程序中。

我想为我的应用程序开发一个帮助/消息子系统,它使用外部资源文件(如果可能的话,使用 HTML 文件)来获取与应用程序各个部分关联的帮助内容,并获取详细的信息/警告/错误消息以显示给用户。

对于与主应用程序相关的所有内容,我可以轻松确定资源文件的相对路径,因为我将这些资源文件与应用程序类文件保存在同一个 jar 中。

对于外部插件,理想情况下,与该插件相关的资源文件应该位于该插件的 jar 中。但是,我没有找到一致的方法来确定动态加载的 jar 中这些文件的路径。

如果能了解我如何能够一致地对内部资源和外部提供的资源执行此操作,以使用主应用程序提供的相同帮助/消息传递框架,我将不胜感激。

最佳答案

如果您尝试从不同的插件或主应用程序代码加载文件,则需要 Spring 的 pluginManager 实例:

InputStream in = pluginManager.getDynamicResourceAsStream(filename)

引用号:https://developer.atlassian.com/confdev/development-resources/confluence-developer-faq/what-is-the-best-way-to-load-a-class-or-resource-from-a-plugin

关于java - 从主应用程序访问插件 jar 中的资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35822463/

相关文章:

wpf - 在 Windows 桌面和 Windows 商店应用程序之间共享字符串资源

java - Java 1.6 与 C++ 的性能对比?

java - 跟踪 Javaws 启动

Java Web Start 显示 "launched from downloaded JNLP file"

java - GWT 运行时依赖项

java - 错误 : Could not find or load main class sample. 主要

java - 带有通知的未知属性失败

java - 在 RxJava2 中捕获错误并返回新类型

c# - 通过ilasm更改可执行图标

c# - 在资源中嵌入文本文件