zoukankan      html  css  js  c++  java
  • jar命令浅析

    jar命令浅谈

     JAR文件的全称是Java Archive File,意思是java档案文件,通常JAR文件是一种压缩文件,并且与常见的Zip文件兼容,两者的区别便是JAR拥有清单文件 (META-INF/MANIFEST.MF),这个文件是生成JAR文件时自动创建的。
     jar在安装JDK时会自动安装,在bin目录里面,Windows里是jar.exe,Lunix里是jar。
     首先输入jar命令,系统会自动提示jar命令的用法。(运行dos命令使用的是Cmder软件,代码前面的“λ”不用输入)

    λ jar
    用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
    选项:
        -c  创建新档案
        -t  列出档案目录
        -x  从档案中提取指定的 (或所有) 文件
        -u  更新现有档案
        -v  在标准输出中生成详细输出
        -f  指定档案文件名
        -m  包含指定清单文件中的清单信息
        -n  创建新档案后执行 Pack200 规范化
        -e  为捆绑到可执行 jar 文件的独立应用程序
            指定应用程序入口点
        -0  仅存储; 不使用任何 ZIP 压缩
        -P  保留文件名中的前导 '/' (绝对路径) 和 ".." (父目录) 组件
        -M  不创建条目的清单文件
        -i  为指定的 jar 文件生成索引信息
        -C  更改为指定的目录并包含以下文件
    如果任何文件为目录, 则对其进行递归处理。
    清单文件名, 档案文件名和入口点名称的指定顺序
    与 'm', 'f' 和 'e' 标记的指定顺序相同。
    
    示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中:
           jar cvf classes.jar Foo.class Bar.class
    示例 2: 使用现有的清单文件 'mymanifest' 并
               将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
           jar cvfm classes.jar mymanifest -C foo/ .
    

    jar文件结构类型

    举例:

    原文件目录结构为:

    ****
        ├ Foder
        |     ├file1
        |     ├file2
        └ file3
    

    则其生成的jar文件构内部目录结构:

    ****.jar
        ├ META-INF
        │ └ MANIFEST.MF(清单文件)
        ├ Foder
        |     ├file1
        |     └file2
        └ file3
    

    命令实例讲解

    1.jar cf .............

    创建jar文件
    语法如下:

    jar cf ****.jar file1 file2 ....

     创建****.jar,并将file1,file2 (jar命令可以指定多个文件) 添加到****.jar包中,如****.jar存在,则覆盖。

    jar cf ****.jar folderName

     创建****.jar,并将folderName文件夹下所有文件添加到 ****.jar包中,如****.jar存在,则覆盖。

    2.jar cvf .............

    创建jar文件,并且显示压缩过程
    会输出类似下面的信息。

    已添加清单
    正在添加: lzj.iml(输入 = 81) (输出 = 75)(压缩了 7%)
    ........
    

    语法与第一个命令相似

    3.jar cvfM .............

    创建jar文件,但不添加清单文件,并且显示压缩过程.
    会输出类似下面的信息。

    正在添加: lzj.iml(输入 = 81) (输出 = 75)(压缩了 7%)
    ........
    

    语法与第一个命令相似

    4.jar cvfm ...........

    创建jar文件,自定义清单文件内容,并且显示压缩过程.
    语法:

    jar cvfm ****.jar ****.mf(大小写皆可) FileName

    在原有清单文件基础上增加****.mf文件的内容(不论名称是什么都可以,但是jar包只认manifest.MF,所以系统会自动完成转化)
    清单文件可直接编辑,但有相应的内容格式要求,这里不做过多介绍。

    5.jar tf ............

    查看jar包文件。
    例如

    λ jar tf lzj.jar
    META-INF/
    META-INF/MANIFEST.MF
    lzj.iml
    

    如果JAR包内文件非常多可使用(命令行窗口显示的行数有限)
    jar tf lzj.jar > lzj.txt
    此时将不再返回信息,文件夹下会生成一个txt文件,里面保存着相应的信息。
    加v,详细的查看jar包文件
    即jar tvf ............
    例如

    λ jar tvf lzj.jar
         0 Sat Jul 20 16:18:02 CST 2019 META-INF/
        69 Sat Jul 20 16:18:02 CST 2019 META-INF/MANIFEST.MF
        81 Sun Dec 16 16:13:00 CST 2018 lzj.iml
    

    也可生成txt文件。

    6.jar xf ................

    解压缩,将jar文件解压到当前目录。不返回信息。
    加v,即jar xvf ................
    系统会显示详细的解压过程
    例如

    λ jar xvf lzj.jar
      已创建: META-INF/
      已解压: META-INF/MANIFEST.MF
      已创建: lzj/
      已创建: lzj/.idea/
      已解压: lzj/.idea/compiler.xml
      已解压: lzj/.idea/encodings.xml
      已解压: lzj/.idea/misc.xml
      ................
    

    7.jar uf ..............

    语法
    jar uf ****.jar file
    将文件加入到jar文件中,如果有同名文件则替。
    加v同样可以详细看到过程
    例如

    λ jar uvf lzj.jar pom.xml
    正在添加: pom.xml(输入 = 502) (输出 = 267)(压缩了 46%)
    

    jar命令扩展

    jar i ****.jar

    为指定的jar文件生成索引,生成在META-INF中名称为INDEX.LIST。

  • 相关阅读:
    朴英敏: 用crash工具分析Linux内核死锁的一次实战【转】
    ext3,ext4,xfs和btrfs文件系统性能对比【转】
    STM32MP157——Remoteproc和RPMsg【转】
    使用edac工具来检测服务器内存故障.【转】
    面试题-python 什么是生成器(generator)?
    面试题-python 什么是迭代器(Iterator)?
    面试题-python 浅拷贝和深拷贝(copy模块)
    selenium+python自动化104-如何获取隐藏元素text文本
    面试题-websocket 接口如何测试?
    jmeter压测学习47-发soap请求测试webservice接口
  • 原文地址:https://www.cnblogs.com/lzjwhy/p/11218312.html
Copyright © 2011-2022 走看看