gpt4 book ai didi

java - Jar 文件 : why does extracting then compression a jar file create a file of a different size to the original?

转载 作者:行者123 更新时间:2023-11-29 06:02:30 24 4
gpt4 key购买 nike

我试图在提取的 Eclipse 插件 jar 文件中编辑单个字节。我注意到,在我将文件重新压缩为 jar 后,生成的文件比原始文件大(只有 1%),而且插件不起作用。 Eclipse 启动,但在选择工作区后静默关闭。回滚到原来的插件让它成功启动。

然后我尝试解压缩,然后压缩插件(不改变任何东西),结果 jar 文件仍然比原来的大,也没有用。

$ jar -xf temp/in.jar

然后

$ jar -cf out.jar temp/*

$ du in.jar out.jar
4216 in.jar
4236 out.jar

我猜这可能是由于时间戳被改变了,但我不认为这会阻止 eclipse 接受它。

所以我的问题是:有没有办法在不显着改变 jar 的情况下解压缩 jar、更改字节并压缩它?

我使用的是 Ubuntu 10.04 - 64 位:

Linux user 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4 11:12:07 UTC 2012 x86_64 GNU/Linux

当查看 jar 的表时,似乎有不同的顺序:

$ jar tf in.jar | head -n 5
META-INF/
META-INF/MANIFEST.MF
com/
com/android/
com/android/ide/

$ jar tf out.jar | head -n 5
META-INF/
META-INF/MANIFEST.MF
about.html
about.ini
about.properties

有没有办法在 jar 里对它们进行不同的排序?

最佳答案

如果一个文件被修改,重新压缩后得到不同的大小是正常的。但是,如果未进行任何修改,则可能两个存档中的根目录不同。

运行以下两个命令并在此处发布结果(仅第一行):

jar tf in.jar
jar tf out.jar

这些命令列出 Jar 文件中的所有文件及其路径。

您是否尝试过使用以下命令仅更新修改后的文件:

jar uf in.jar TheFileYouModified

TheFileYouModified 必须与 JAR 文件中的路径相同。例如,要替换您在/tmp/injar/中提取并修改的 com/android/Example.class:

jar uf in.jar -C /tmp/injar com/android/Example.class

关于java - Jar 文件 : why does extracting then compression a jar file create a file of a different size to the original?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com