You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取Jar包并写入新文件后体积变小的原因排查

Jar包复制后体积差异的原因分析

你的代码看似只是原封不动复制Jar包内容,但生成的临时Jar体积出现差异,主要是以下几个原因:

  • 压缩设置与元数据不一致
    原Jar中的每个JarEntry都带有压缩方式、修改时间、CRC校验值等元数据。当你把原JarEntry写入新的JarOutputStream时,输出流可能会重新计算这些元数据,或者使用默认的压缩策略(比如原Jar中某些文件是未压缩的,新输出流默认启用了压缩,反之亦然),单个条目的体积变化累积起来,就造成了整体Jar的体积差异。

  • Jar结构细节未完全保留
    Jar文件包含一些额外的结构信息,比如目录条目的存储格式、签名相关文件(如果原Jar有签名,META-INF下的.SF/.DSA等文件)。复制过程中,JarOutputStream不会完全复刻原Jar的这些结构细节,比如签名文件会因为元数据变化而失效,或者目录条目的属性被重置,进而影响整体文件大小。

  • 特殊条目的处理差异
    原Jar中可能存在空目录、空文件这类特殊条目,JarOutputStream对这些条目的默认处理方式和原Jar可能不同,比如空目录的存储大小、属性设置有细微差别,也会导致整体体积变化。

要验证的话,可以用解压工具分别打开原Jar和临时Jar,对比每个文件的大小、压缩状态,以及META-INF目录下的文件内容差异,就能定位具体是哪些条目导致的体积变化。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:45:29