使用jar命令在特定目录中的JAR文件中更新文件

因此,我一直在寻找一个高低的答案,显然找不到令人满意的答案。

问题是我想在JAR内更新JAR(或与此相关的任何文件),但是所说的文件在文件夹结构内,我想避免在JAR之外重现,以便我可以对其进行更新。

例:

Foo.jar (root directory)

/

|->/folder1

|

|->/folder2

|

|->/foo

|

|-->/bar

|

|---->/baz

|

|------>file_to_update.jar

因此,如果要使用 jar 命令更新此文件,则必须先在JAR外部创建相同的文件夹结构,然后再执行

jar -uf Foo.jar -C foo/bar/baz/file_to_update.jar

但是,我想避免创建此文件夹结构,因为对于某些文件而言,它可能很深,而且因为我可能需要在整个容器JAR中更新选定的文件,所以我不想仅创建一个具有特定结构的文件夹因此

jar 命令可以更新它们。

换句话说,我想告诉 jar 命令使用特定源目录中的特定源文件来更新特定目标目录中的特定目标文件。

即像

jar -uf Foo.jar -sourceFile /x/y/z/filetoupdate -destFile /a/b/c/filetoupdate

(我知道这种语法不起作用,只是为了说明我所需要的)。

能做到吗?令我感到非常奇怪的是,当 jar

命令可以找到匹配的东西时,我绝对需要模仿整个文件夹结构,因为我可能需要更新深100个文件夹的文件夹结构中的文件。仅仅为了更新文件而复制就太复杂了。

另外,我知道可以使用常规的ZIP实用程序,但是我在Linux中可以使用的实用程序即使它说可以了也不会更新文件(重新打开jar时,它具有完整的旧版本),现在我不能再去找另一个了(公司政策,没有时间,测试问题,你叫它)。

最后,如果可以从命令行执行此操作,则意味着可以创建批处理文件来更新许多特定文件,而无需创建文件夹结构。

我忘了说了,我也想避免不必解压缩,更新,重新打包整个内容,因为这个JAR可以上升到2GB,所以花一点时间才能做到这一点,基本上是在我的计算机上添加一些资源文件。巨大的JAR。

在这方面的任何帮助,我们将不胜感激!

回答:

4129445:用于增量更新

Sun /

Oracle错误数据库中的ZIP文件的API要求在Java

api中实现此功能。

根据评估:

“很容易同情那些希望修复此错误的人。也许更容易同情那些已经无意中覆盖了正在运行的JVM的JAR文件的人。”

“如果jar和zip

API从一开始就允许可变的zip文件,那就太好了。但是在这一点上,可能会引入Java的jar和zip文件的可变性(或者说,增加对它们进行突变的便利性)更多难以调试的问题。”

以上是 使用jar命令在特定目录中的JAR文件中更新文件 的全部内容, 来源链接: utcz.com/qa/427987.html

回到顶部