Jar使用1

Jar使用

Jar的作用:
将一个文件目录打包成一个zip压缩包。

用法: jar [OPTION...] [ [--release VERSION] [-C dir] files] ...
尝试使用 `jar --help' 获取详细信息。

C:\Users\EthanZhou>jar --help
用法: 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               创建档案
  -i, --generate-index=FILE  为指定的 jar 档案生成
                             索引信息
  -t, --list                 列出档案的目录
  -u, --update               更新现有 jar 档案
  -x, --extract              从档案中提取指定的 (或全部) 文件
  -d, --describe-module      输出模块描述符或自动模块名称

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

  -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 压缩

 其他选项:

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

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

 如果为长选项提供了必需参数或可选参数, 则它们对于
 任何对应的短选项也是必需或可选的。

目录情况:
目录情况
示例1:将bin目录及其下面的子文件打包成一个bin.jar文件

D:\Eclipse\ThingkingInJava>jar --create --file bin.jar bin

结果:
在bin的同级目录下创建了bin.jar文件,
示例1结果1解压查看bin.jar文件,其目录中比需要被打包的bin目录多了一个META-INF的目录,且该目录下存放一个MANIFEST.MF文件,该文件内容为。
示例1结果2
在这里插入图片描述
MANIFEST.MF文件是清单文件,用来描述jar包包含的文件。

Manifest-Version: 1.0
lines describing this archive
 
Name: Woozle.class
lines describing this file
Name: com/mycompany/mypkg/`在这里插入代码片`
lines describing this package

示例2:利用已有的MANIFEST文件创建一个jar包

在这里插入图片描述MANIFEST文件以txt形式存储,文件内容可以根据自己实际情况编写。编写时遵循如下格式规范:

如果内容格式存在问题,执行jar命令时,会出现类似下图的报错。
在这里插入图片描述

D:\Eclipse\ThingkingInJava>jar --create --file bin.jar --manifest myMANIFEST.txt bin

运行结果:
目录结构与实例1相同,只是MANIFEST.MF文件内容发生了变化。
在这里插入图片描述
在这里插入图片描述
示例3:将非当前目录下的文件打包。
目录结构如下图:
目录结构

D:\Eclipse>jar --create --file srcAndWelcome.jar -C ThingkingInJava\ src -C Test\ WelcomeToJava.java

结果:
在这里插入图片描述

D:\Eclipse>jar --create --file srcAndWelcome1.jar ThingkingInJava\src Test\WelcomeToJava.java

在这里插入图片描述对比这两个指令运行的结果发现-C选项的作用在于,只打包-C 选项后目录下的文件,而不打包-C 选项后的目录

示例4:显示打包文件的过程信息。

D:\Eclipse>jar --create --verbose --file srcAndWelcome2.jar ThingkingInJava\src Test\WelcomeToJava.java

在这里插入图片描述
示例5:在一个jar包中指定程序入口类(及包含main函数的类)

D:\Eclipse\Test>jar --create --file WelcomeToJava.jar -v -e WelcomeToJava WelcomeToJava.class

结果:MANIFEST.MF文件多了一个Main-Class:WelcomeToJava,这里指定了jar包运行的入口类。
在这里插入图片描述
在这里插入图片描述
示例6:显示jar包内容

D:\Eclipse\Test>jar --list --file WelcomeToJava.jar

META-INF/
META-INF/MANIFEST.MF
WelcomeToJava.class

示例7:解压jar包,将jar包内容解压到当前目录中

D:\Eclipse\Test>jar --extract --file WelcomeToJava.jar

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习_程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值