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软件,代码前面的“λ”不用输入)java
λ 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/ .
举例: ide
原文件目录结构为:ui
**** ├ Foder | ├file1 | ├file2 └ file3
则其生成的jar文件构内部目录结构:idea
****.jar ├ META-INF │ └ MANIFEST.MF(清单文件) ├ Foder | ├file1 | └file2 └ file3
建立jar文件
语法以下:命令行
建立****.jar,并将file1,file2 (jar命令能够指定多个文件) 添加到****.jar包中,如****.jar存在,则覆盖。unix
建立****.jar,并将folderName文件夹下全部文件添加到 ****.jar包中,如****.jar存在,则覆盖。code
建立jar文件,而且显示压缩过程
会输出相似下面的信息。xml
已添加清单 正在添加: lzj.iml(输入 = 81) (输出 = 75)(压缩了 7%) ........
语法与第一个命令类似递归
建立jar文件,但不添加清单文件,而且显示压缩过程.
会输出相似下面的信息。索引
正在添加: lzj.iml(输入 = 81) (输出 = 75)(压缩了 7%) ........
语法与第一个命令类似
建立jar文件,自定义清单文件内容,而且显示压缩过程.
语法:
在原有清单文件基础上增长****.mf文件的内容(不论名称是什么均可以,可是jar包只认manifest.MF,因此系统会自动完成转化)
清单文件可直接编辑,但有相应的内容格式要求,这里不作过多介绍。
查看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文件。
解压缩,将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 ................
语法
jar uf ****.jar file
将文件加入到jar文件中,若是有同名文件则替。
加v一样能够详细看到过程
例如
λ jar uvf lzj.jar pom.xml 正在添加: pom.xml(输入 = 502) (输出 = 267)(压缩了 46%)
为指定的jar文件生成索引,生成在META-INF中名称为INDEX.LIST。