上一篇
Linux解压jar后如何重新压缩?
- Linux
- 2025-06-09
- 7
解压jar包后修改文件,使用 jar cvf new.jar -C 解压目录/ .重新压缩,注意保留原目录结构,确保META-INF等重要文件完整。
在Linux系统中,JAR包本质是遵循ZIP格式的压缩文件,解压后重新压缩需确保文件结构和权限正确,以下是详细操作指南:

解压JAR包
方法1:使用jar命令(推荐)
jar xvf your_file.jar # 解压到当前目录
- x:解压
- v:显示过程
- f:指定文件名
方法2:使用unzip
unzip your_file.jar -d output_dir/ # 解压到指定目录
修改文件(可选)
解压后按需编辑文件(如配置文件、类文件等),务必注意:
- 保留META-INF/目录结构(内含签名和清单文件)
- 若修改代码,需重新编译(.java → .class)
重新压缩为JAR包
方法1:使用jar命令(自动处理清单文件)
jar cvf new_file.jar -C extracted_dir/ . # 将目录内容打包
- c:创建新JAR
- f:指定输出文件名
- -C:切换到指定目录后再打包
- 末尾的:打包该目录下所有文件
方法2:使用zip命令(需手动处理权限)
cd extracted_dir/ && zip -r ../new_file.jar * # 压缩当前目录所有文件
- -r:递归压缩
- :包含所有文件(含隐藏文件需用)
关键注意事项
-
清单文件保护
JAR包的META-INF/MANIFEST.MF定义元数据,删除或损坏会导致程序无法运行,解压后勿移动此目录。

-
文件权限保留
使用zip打包时,添加-X保留UID/GID:

-
签名验证问题
若原JAR有数字签名,解压后签名失效,需用jarsigner重新签名:
jarsigner -keystore your_keystore.jks new_file.jar your_alias
- 检查结构: jar tf new_file.jar # 列出内容
- 运行测试(如有主类): java -jar new_file.jar
- 专为JAR设计,自动处理清单文件和目录结构
- 避免zip命令可能导致的权限或路径错误
- 与Java生态工具链(如jarsigner)无缝协作
- Oracle jar工具指南:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jar.html
- ZIP命令行手册:https://linux.die.net/man/1/zip
验证新JAR包
完整操作示例
# 解压 jar xvf app.jar -C extracted/ # 修改文件(示例:更新配置文件) vim extracted/config.properties # 重新打包 jar cvf new_app.jar -C extracted/ . # 验证 java -jar new_app.jar
为什么推荐jar命令?
引用说明:本文操作基于OpenJDK官方文档及GNU ZIP标准,参考来源: