jar命令:linux中对jar文件的操作

这篇具有很好参考价值的文章主要介绍了jar命令:linux中对jar文件的操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Linux 中,您可以使用 jar 命令来对 jar 文件中的文件进行编辑。jar 命令是 Java Development Kit (JDK) 中的一部分,用于创建、查看和修改 jar 文件。

先看一下jar自带的帮助文档

─$ jar --help                                                                                                                                                                                                                      127 ↵
用法: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
jar 创建类和资源的档案, 并且可以处理档案中的
单个类或资源或者从档案中还原单个类或资源。

 示例:
 # 创建包含两个类文件的名为 classes.jar 的档案:
 jar --create --file classes.jar Foo.class Bar.class
 # 使用现有的清单创建档案, 其中包含 foo/ 中的所有文件:
 jar --create --file classes.jar --manifest mymanifest -C foo/ .
 # 创建模块化 jar 档案, 其中模块描述符位于
 # classes/module-info.class:
 jar --create --file foo.jar --main-class com.foo.Main --module-version 1.0
     -C foo/ classes resources
 # 将现有的非模块化 jar 更新为模块化 jar:
 jar --update --file foo.jar --main-class com.foo.Main --module-version 1.0
     -C foo/ module-info.class
 # 创建包含多个发行版的 jar, 并将一些文件放在 META-INF/versions/9 目录中:
 jar --create --file mr.jar -C foo classes --release 9 -C foo9 classes

要缩短或简化 jar 命令, 可以在单独的文本文件中指定参数,
并使用 @ 符号作为前缀将此文件传递给 jar 命令。

 示例:
 # 从文件 classes.list 读取附加选项和类文件列表
 jar --create --file my.jar @classes.list


 主操作模式:

  -c, --create               创建档案。通过 -f 或 --file 指定的档案文件名
                             包含路径时,还将创建
                             缺少的父目录
  -i, --generate-index=FILE  为指定的 jar 档案生成
                             索引信息
  -t, --list                 列出档案的目录
  -u, --update               更新现有 jar 档案
  -x, --extract              从档案中提取指定的 (或全部) 文件
  -d, --describe-module      输出模块描述符或自动模块名称
      --validate             验证 jar 档案的内容。此选项
                             将验证由多发行版 jar 档案导出
                             的 API 在所有不同的发行版本中
                             是否一致。

 在任意模式下有效的操作修饰符:

  -C DIR                     更改为指定的目录并包含
                             以下文件
  -f, --file=FILE            档案文件名。省略时, 基于操作
                             使用 stdin 或 stdout
      --release VERSION      将下面的所有文件都放在
                             jar 的版本化目录中 (即 META-INF/versions/VERSION/)
  -v, --verbose              在标准输出中生成详细输出

 在创建和更新模式下有效的操作修饰符:

  -e, --main-class=CLASSNAME 捆绑到模块化或可执行
                             jar 档案的独立应用程序
                             的应用程序入口点
  -m, --manifest=FILE        包含指定清单文件中的
                             清单信息
  -M, --no-manifest          不为条目创建清单文件
      --module-version=VERSION    创建模块化 jar 或更新
                             非模块化 jar 时的模块版本
      --hash-modules=PATTERN 计算和记录模块的散列,
                             这些模块按指定模式匹配并直接或
                             间接依赖于所创建的模块化 jar 或
                             所更新的非模块化 jar
  -p, --module-path          模块被依赖对象的位置, 用于生成
                             散列

 只在创建, 更新和生成索引模式下有效的操作修饰符:

  -0, --no-compress          仅存储; 不使用 ZIP 压缩
      --date=TIMESTAMP       具有可选时区的 ISO-8601 扩展偏移
                             日期时间格式的时间戳(用于条目的时间戳),
                             例如,"2022-02-12T12:30:00-05:00"

 其他选项:

  -?, -h, --help[:compat]    提供此帮助,也可以选择性地提供兼容性帮助
      --help-extra           提供额外选项的帮助
      --version              输出程序版本

 如果模块描述符 'module-info.class' 位于指定目录的
 根目录中, 或者位于 jar 档案本身的根目录中, 则
 该档案是一个模块化 jar。以下操作只在创建模块化 jar,
 或更新现有的非模块化 jar 时有效: '--module-version',
 '--hash-modules' 和 '--module-path'。

 如果为长选项提供了必需参数或可选参数, 则它们对于
 任何对应的短选项也是必需或可选的。
 
 cheat:jar
---
syntax: bash
tags: [ java ]
---
# To archive all files in the current directory into a jar file:
jar cf <file.jar> *

# To create a jar file using a pre-existing manifest file:
jar cfm <file.jar> <manifest_file> *

# To extract all files from a jar file in the current directory:
jar xf <file.jar>

# To extract only certain files from a jar file:
jar xf <file.jar> <file_to_extract>

# To list the content of a jar file:
jar tf <file.jar>

# To list the content of a jar file with verbose output:
jar tf <file.jar>

 tldr:jar
# jar
# Java applications/libraries packager.
# More information: <https://docs.oracle.com/javase/tutorial/deployment/jar/basicsindex.html>.

# Recursively archive all files in the current directory into a .jar file:
jar cf file.jar *

# Unzip .jar/.war file to the current directory:
jar -xvf file.jar

# List a .jar/.war file content:
jar tf path/to/file.jar

# List a .jar/.war file content with verbose output:
jar tvf path/to/file.jar

linux中,替换jar包中的文件,可以减少重新打包上传的时间,尤其是网速不好的时候。

根据文件名,查找出文件在jar包中的文件目录位置;

╰─$ jar -tvf dispatch-analysis-web-2.0.0.0.jar | grep FocusEnterpriseMapper.xml

>   651 Tue Jun 20 16:04:26 CST 2023 BOOT-INF/classes/com/ehl/utb/analysis/db/xml/FocusEnterpriseMapper.xml

将需要修改的文件,解压出来,并替换修改的文件;

jar -xvf dispatch-analysis-web-2.0.0.0.jar BOOT-INF/classes/com/ehl/utb/analysis/db/xml/FocusEnterpriseMapper.xml

解压完之后,在当前文件夹中,就会有对应的目录文件:

BOOT-INF/classes/com/ehl/utb/analysis/db/xml/FocusEnterpriseMapper.xml

根据上面的解压目录找到FocusEnterpriseMapper.xml,然后把我们需要更换的这个文件放进去,覆盖之前的文件即可。

之后开始把更新后的文件放入jar中。压缩修改完的文件;

╰─$ jar -uvf dispatch-analysis-web-2.0.0.0.jar BOOT-INF/classes/com/ehl/utb/analysis/db/xml/FocusEnterpriseMapper.xml

文件放入成功,这个时候,重启项目即可。

替换jar包中的jar文件时,前2个步骤同上,最后一步略有不同。

╰─$ jar -uvf0 abc.jar BOOT-INF/lib/a.jar

使用的是-uvf0而是不是-uvf

参考:linux中对jar文件的操作,Linux如何修改jar里的文件,linux替换jar包文件文章来源地址https://www.toymoban.com/news/detail-499568.html

到了这里,关于jar命令:linux中对jar文件的操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux基础命令 - 文件及目录操作, 打印输出, 查找命令, 用户及权限管理, vi的使用等

    vi - 纯文本编辑器 vi命令 是UNIX操作系统和类UNIX操作系统中最通用的 全屏幕 纯文本编辑器。Linux中的vi编辑器叫 vim ,它是vi的 增强版 (vi Improved),与vi编辑器 完全兼容 ,而且实现了很多 增强功能 。 vi编辑器支持 编辑模式 和 命令模式 ,编辑模式下可以完成文本的编辑功

    2024年02月06日
    浏览(82)
  • Linux的文件操作命令

    接下来将介绍Linux中一些常用的文件操作命令,今天先演示五个类型的命令操作,内容不是特别的全,找的几个典型的常用的演示,想要全面的可以另找资料了解一下,推荐大家跟着敲跟着做才能加深记忆,祝大家学的开心,另外提醒大家,每个命令后面必须加空格然

    2024年02月05日
    浏览(67)
  • Linux文件目录操作命令-mv命令

            mv 命令是 move 的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。  mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。当第二个参数类型

    2024年02月02日
    浏览(44)
  • Linux 命令操作(一)——文件和目录操作

    目录信息 参考链接 Linux常用操作命令大全 1.1、创建文件夹 1.1.1、创建目录 1.1.2、创建文件 touch命令操作 1.2、删除文件夹/文件 1.2.1、删除目录操作 1.2.2、删除文件 1.3、重命名目录或者文件名称 1.4、目录切换 1.5、目录以及文件列表查看 1.6、复制目录或者文件 -r 递归处理,将

    2024年02月03日
    浏览(46)
  • 文件目录操作——Linux命令核心

    目录 相对路径和绝对路径  查看和切换工作目录 pwd 显示当前工作目录的绝对路径 cd 切换目录 列出目录内容 ls 列出目录的内容 创建和删除目录文件夹 mkdir创建一个新目录 rmdir 删除一个空的目录 touch 创建空文件 cp复制文件或者目录 rm 删除文件或目录  mv移动文件与目录或重

    2024年02月01日
    浏览(41)
  • Shell命令操作Linux文件系统

      Linux文件系统是计算机操作系统中的一个关键组成部分,它用于管理和组织计算机上的数据和信息。先到根目录,然后打印当前目录下文件:   有一些比较常用的文件夹介绍如下:    /bin ——包含常见Linux 用户命令,比如 ls、sort、date和l chmod。    /home ——包含分

    2024年02月09日
    浏览(40)
  • 快速上手Linux核心命令(三):文件和目录操作命令

    目录 前言 cd 切换目录 pwd 显示当前路径 ls 显示目录下内容及相关属性信息 mkdir 创建目录 tree 以树形结构显示目录下的内容 touch 创建空白文件或改变文件的时间戳属性 cp 复制文件或目录 mv 移动或重命名文件 rm 删除文件或目录 chown 改变文件或目录的用户用户组 chmod 改变文件

    2023年04月23日
    浏览(52)
  • linux笔记--文件内容操作和历史命令

    目录 cat命令 more命令 less命令 head命令 tail命令 sed命令 vim编辑器 history命令 clear命令 查看文件内容,标准输出 补充:         1.标准输出:在linux中规定为输出到屏幕         2.标准输入:在linux中规定为从键盘输入 /etc/hostname文件是用来存放主机名,/etc/centos-release文件存放的

    2024年01月22日
    浏览(46)
  • Linux 终端命令之文件目录操作,对比Dos相关命令

    目录 前言 基础命令(文件目录相关的) cd命令 【英文帮助】 【对应Dos命令】 pwd命令 【英文帮助】 【对应Dos命令】 ls命令 【英文帮助】 【对应Dos命令】 tree命令 【英文帮助】 【对应Dos命令】 mkdir命令 【英文帮助】 【对应Dos命令】 rmdir/rm命令 【英文帮助】 【对应Dos命令

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包