【问题标题】:Access resource files in plugin jars from main application从主应用程序访问插件 jar 中的资源文件
【发布时间】:2016-03-06 02:38:05
【问题描述】:

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

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

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

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

如果我能始终如一地为内部资源和外部提供的资源使用主应用程序提供的相同帮助/消息传递框架,我将不胜感激。

【问题讨论】:

    标签: java jar embedded-resource


    【解决方案1】:

    如果您尝试从其他插件或主应用程序代码加载文件,则需要 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

    【讨论】:

    • 我试图让它工作,但是看起来开发人员在构建/运行时需要安装 Altassian SDK。不幸的是,这不适合我的场景
    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2015-04-21
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多