当前位置:首页 > Linux > 正文

Linux解压jar后如何重新压缩?

解压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/  # 解压到指定目录

修改文件(可选)

解压后按需编辑文件(如配置文件、类文件等),务必注意

Linux解压jar后如何重新压缩?  第1张

  1. 保留META-INF/目录结构(内含签名和清单文件)
  2. 若修改代码,需重新编译(.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:递归压缩
  • :包含所有文件(含隐藏文件需用)

关键注意事项

  1. 清单文件保护
    JAR包的META-INF/MANIFEST.MF定义元数据,删除或损坏会导致程序无法运行,解压后勿移动此目录。

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

    zip -rX new_file.jar *
  3. 签名验证问题
    若原JAR有数字签名,解压后签名失效,需用jarsigner重新签名:

    jarsigner -keystore your_keystore.jks new_file.jar your_alias

验证新JAR包

  1. 检查结构:
    jar tf new_file.jar  # 列出内容
  2. 运行测试(如有主类):
    java -jar new_file.jar

完整操作示例

# 解压
jar xvf app.jar -C extracted/
# 修改文件(示例:更新配置文件)
vim extracted/config.properties
# 重新打包
jar cvf new_app.jar -C extracted/ .
# 验证
java -jar new_app.jar

为什么推荐jar命令?

  • 专为JAR设计,自动处理清单文件和目录结构
  • 避免zip命令可能导致的权限或路径错误
  • 与Java生态工具链(如jarsigner)无缝协作

引用说明:本文操作基于OpenJDK官方文档及GNU ZIP标准,参考来源:

  • Oracle jar工具指南:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jar.html
  • ZIP命令行手册:https://linux.die.net/man/1/zip
0