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

Bob*_*y C 15 java jar

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

jar uf myfile.jar -C images hi.png
Run Code Online (Sandbox Code Playgroud)

我希望与命令做的是,以取代旧hi.png新hi.png.但是,它给了我这个错误:

images\hi.png : no such file or directory
Run Code Online (Sandbox Code Playgroud)

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

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

zie*_*mer 29

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

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

jar uf myfile.jar images\hi.png
Run Code Online (Sandbox Code Playgroud)


ian*_*its 10

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

  1. 编辑文件:

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

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


Ali*_*lah 5

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


小智 5

您可以使用“jar”命令行来提取文件并创建一个新的 jar 文件。

更多详细信息,您可以查看如何替换 jar 文件中的图像

# create a new folder
mkdir contents
# extract jar file
jar xf example-1.5.jar
# Then you'll get a list of new files from jar
ls
# update your images in it
# create a new jar
jar cf example-1.5.jar *
Run Code Online (Sandbox Code Playgroud)