Java 将资源动态打包到jar中

Java 将资源动态打包到jar中,java,jar,resources,embedded-resource,Java,Jar,Resources,Embedded Resource,我需要访问一些资源(对于上下文帮助系统),这些资源可能位于目录树(文件系统中的某个地方)中,也可能包含在特定的.jar中 文件系统中的资源应优先于“打包”资源 我应该提供一个运行时(而不是编译时操作)命令,以将所有资源从FileSystem目录树迁移到.jar包 我想构建一个单独的.jar来包含这些资源。我不想/不需要修改代码。我需要以最少的帮助交付一个产品,并允许客户对其进行优化和更新,需要重新编译。然后,客户将分发“改进”版本 实现这一点的最佳方式是什么 我对“迁移”部分特别感兴趣,因为我应

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

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

我应该提供一个运行时(而不是编译时操作)命令,以将所有资源从FileSystem目录树迁移到.jar包

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

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


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

实现这一点有多种方法,但对我来说,重新使用Java从类路径上的目录中读取资源的能力看起来最简单

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


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

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