如何在不重新打包整个jar的情况下更新jar中的一个文件?

我有一个名为myfile.jar的.jar文件。 在这个jar文件里面是一个名为images的文件夹。 在这个名为images的文件夹中,我有一个名为hi.png的图像。 我想用该图像的新版本更新该图像,也称为hi.png。 我不想从单个jar文件中提取所有文件然后重新打包它们,我只是想更新图像。 所以,我像往常一样去命令行,键入几行代码,然后我执行以下命令:

jar uf myfile.jar -C images hi.png 

我希望用这个命令做的是用新的hi.png替换旧的hi.png。 但是,它给了我这个错误:

 images\hi.png : no such file or directory 

我该怎么做才能解决这个问题?

额外信息:我不能使用类似WinRAR的东西,我必须使用命令行执行此操作。

-C正在更改本地目录,并在那里寻找hi.png 。 它无法控制您尝试将其注入JAR文件的位置。

我会尝试创建一个名为images的新目录,将你的本地hi.png移动到其中,使images成为当前工作目录的子目录,然后运行:

 jar uf myfile.jar images\hi.png 

最简单的方法是使用7-zip软件。 对于

  1. 编辑文件:

    • 打开jar文件7-zip | 打开档案
    • 转到文件,例如/Meta-Inf/xyz.conf
    • 单击鼠标右键并选择“ 打开内部 ”选项
    • 编辑文件并保存文件
    • 关闭7拉链控制台,它已经完成。
  2. 用于添加/替换/删除文件。

    • 按照前两个步骤,直到到达所需的文件夹。
    • 删除 :删除文件
    • 添加 :将文件拖放到7-zip控制台。
    • 关闭控制台,它就完成了。

你可以使用jar -uf sample.jar [path in jar file]target-file

如果您想编辑文本文件,可以直接使用vim

(假设您已unzip ,例如yum install -y unzip在CentOS上yum install -y unzip

vim my.jar