【问题标题】:Dynamically pack resources into jar将资源动态打包到jar中
【发布时间】:2014-07-26 06:56:56
【问题描述】:

我需要访问一些资源(用于上下文帮助系统),这些资源可能位于目录树中(文件系统中的某个位置)或包含在特定的 .jar 中。

文件系统中的资源应优先于“打包”资源。

我应该提供一个 runtime(不是编译时操作)命令来将所有资源从文件系统目录树迁移到 .jar 包。

我想构建一个单独的 .jar 来包含这些资源。我不想/不需要修改代码。我需要在提供最少帮助的情况下交付产品,并允许客户对其进行改进并更新需要重新编译。然后客户将分发“改进”版本。

实现这一点的最佳方法是什么?

我对“迁移”部分特别感兴趣,因为我应该能够编写资源访问部分的代码,但始终欢迎 cmets。

【问题讨论】:

  • 您想在运行时更改 JAR?自行修改代码是个坏主意。
  • 没有。我想构建一个单独的 .jar 来包含 那些 资源。我不想/不需要修改代码。我需要在提供最少帮助的情况下交付产品,并允许客户对其进行改进和更新, 无需重新编译。然后客户将分发“改进”版本。

标签: java jar resources embedded-resource


【解决方案1】:

这可以通过多种方式实现,但重用 Java 从类路径上的目录读取资源的能力对我来说似乎是最简单的。

使用包含可更新帮助资源的 zip 文件交付应用程序。在应用程序启动时,将此 zip 文件解压缩到 apphome/help-resources,但不要覆盖较新/修改过的文件。使用this answer 中的技术将apphome/help-resources 目录添加到类路径中。从那时起,可以像在类路径上的 jar 文件中一样加载资源(无需特殊代码)。

客户可以更新apphome/help-resources 中的文件,并且使用运行时命令可以使用apphome/help-resources 目录中的文件更新/重新创建压缩文件。或者,如果客户有 7-zip 或类似的东西,只需使用 zip 工具创建 zip 文件。

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2013-07-07
    • 2019-06-18
    • 1970-01-01
    • 2011-11-07
    • 2016-03-17
    • 2012-02-23
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多