• java---jar详解


    一、help

    C:\Users\lichf1>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/ .
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    二、参数详解

    1、简单打包

    jar -cf jar包名     class-file1  class-file2 ......
    
    
    • 1
    • 2

    2、-C dir 指定class文件路径,并打包该路径下的class文件

    jar -cf jar包名  -C  dir  .  
    #-C dir  相当于cd到该目录,然后执行打包命令
    #将 foo/ 目录中的所有文件归档到 'classes.jar' 中:
    jar cvfm classes.jar mymanifest -C foo/ .
    
    • 1
    • 2
    • 3
    • 4

    3、-t 查看jar包文件列表

    4、-v 打印详细信息

    5、-m 指定自定义mainfest.mf文件,并将其中内容覆盖到META-INF\MAINFEST.MF文件中

    6、-u 更新META-INF\MAINFEST.MF文件

    7、-e 指定入口类,即 com.bos.YYZCApplication

    8、 jar -i jar包 生成索引

    9、-M 不创建META-INF\MAINFEST.MF文件

    10、-x 解压

    注意

    清单文件名(mainfest文件), 档案文件名(jar包文件)和入口点(程序入口类)名称的指定顺序 与 ‘m’, ‘f’ 和 ‘e’ 标记的指定顺序相同

    三、具体使用

    1、将class文件打包,并指定入口类

    D:\project>jar -cvfe com.bos.jar  com.bos.YYZCApplication   .\com\bos\*class    .\com\bos\service\*class
    已添加清单
    正在添加: com/bos/Student.class(输入 = 279) (输出 = 213)(压缩了 23%)
    正在添加: com/bos/YYZCApplication.class(输入 = 557) (输出 = 375)(压缩了 32%)
    正在添加: com/bos/service/Working.class(输入 = 288) (输出 = 222)(压缩了 22%)
    ## 执行
    D:\project>java -jar com.bos.jar
    hello world
    
    D:\project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2、将class文件打包,并指定自定义mainfest.mf文件,mainfest.mf在当前路径下

    cat mainfes.mf
    Manifest-Version: 1.0
    Created-By: 1.8.0_144 (Oracle Corporation)
    Main-Class: com.bos.YYZCApplication
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    D:\project>jar -cvfm com.bos.jar  mainfes.mf   .\com\bos\*class    .\com\bos\service\*class
    已添加清单
    正在添加: com/bos/Student.class(输入 = 279) (输出 = 213)(压缩了 23%)
    正在添加: com/bos/YYZCApplication.class(输入 = 557) (输出 = 375)(压缩了 32%)
    正在添加: com/bos/service/Working.class(输入 = 288) (输出 = 222)(压缩了 22%)
    
    D:\project>java -jar com.bos.jar
    hello world
    
    D:\project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3、将test目录下的所有文件打包,并指定mainfest.mf文件,mainfest.mf在当前路径下(不是在test路径下)(注意最后的dot)

    D:\project>jar -cvfm com.jar mainfes.mf   -C test .
    已添加清单
    正在添加: com/(输入 = 0) (输出 = 0)(存储了 0%)
    正在添加: com/bos/(输入 = 0) (输出 = 0)(存储了 0%)
    正在添加: com/bos/service/(输入 = 0) (输出 = 0)(存储了 0%)
    正在添加: com/bos/service/Working.class(输入 = 288) (输出 = 222)(压缩了 22%)
    正在添加: com/bos/service/Working.java(输入 = 163) (输出 = 102)(压缩了 37%)
    正在添加: com/bos/Student.class(输入 = 279) (输出 = 213)(压缩了 23%)
    正在添加: com/bos/Student.java(输入 = 141) (输出 = 90)(压缩了 36%)
    正在添加: com/bos/YYZCApplication.class(输入 = 557) (输出 = 375)(压缩了 32%)
    正在添加: com/bos/YYZCApplication.java(输入 = 308) (输出 = 186)(压缩了 39%)
    
    D:\project>java -jar com.jar
    hello world
    
    D:\project>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    vue 父组件给子组件传递一个函数,子组件调用父组件中的方法
    腾讯不被看好?Prosus宣布减持股份,中国科技公司路在何方?
    C++:多态 详解
    HttpClient
    不用电的计算机(二)
    Vue Router的使用
    ES6中数组新增了哪些扩展?
    测试3年,从功能测试到测试开发,涨薪10W+,总算是证明了自己
    Mysql创建视图中文乱码修改docker里的配置
    JS哈希表系列
  • 原文地址:https://blog.csdn.net/qq_41768644/article/details/132888534