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

解压jar包后修改文件,使用jar cvf new.jar -C 解压目录/ .重新压缩,注意保留原目录结构,确保META-INF等重要文件完整。

在Linux系统中,JAR包本质是遵循ZIP格式的压缩文件,解压后重新压缩需确保文件结构和权限正确,以下是详细操作指南:

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


解压JAR包

方法1:使用jar命令(推荐)

jar xvf your_file.jar  # 解压到当前目录
  • x:解压
  • v:显示过程
  • f:指定文件名

方法2:使用unzip

unzip your_file.jar -d output_dir/  # 解压到指定目录

修改文件(可选)

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

  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定义元数据,删除或损坏会导致程序无法运行,解压后勿移动此目录。

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

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

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

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

    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

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/17312.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月9日 22:02
下一篇 2025年6月9日 22:08

相关推荐

  • 如何在Linux服务器上实现高效管理与操作

    Linux操作服务器需掌握基础命令管理文件进程,使用权限控制确保安全,通过包管理器安装配置软件,编写脚本自动化任务,利用SSH远程连接维护系统,并监控日志及防火墙保障服务稳定运行。

    2025年5月28日
    400
  • Linux安装Oracle 11g详细步骤教程?

    下载Oracle 11g安装包及依赖包,解压后运行runInstaller启动图形化安装程序,按向导配置安装类型、路径、字符集等,执行root脚本,最后配置环境变量(如ORACLE_HOME)即可完成安装。

    2025年6月9日
    000
  • 如何快速打开Linux终端

    在Linux系统中,打开命令窗口(终端)的常用方法:使用快捷键Ctrl+Alt+T,或在应用程序菜单中搜索并点击“终端”选项,适用于Ubuntu等常见发行版。

    2025年6月10日
    000
  • Linux重启SVN仓库教程?

    Linux SVN仓库本身无需重启,需重启其服务进程:,* 若使用**svnserve**:执行 sudo systemctl restart svnserve 或 sudo service svnserve restart。,* 若通过**Apache**集成:重启Apache服务 sudo systemctl restart apache2 (或 httpd)。,仓库数据不受影响,服务中断片刻后恢复访问。

    2025年6月16日
    000
  • linux如何安装openssh

    在大多数Linux发行版中,通过包管理器安装OpenSSH服务器:Debian/Ubuntu使用sudo apt install openssh-server,CentOS/RHEL使用sudo yum install openssh-server,安装完成后服务通常会自动启动,也可用sudo systemctl start sshd手动启动,安装后需进行必要的安全配置。

    2025年6月9日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN