JAR 文件是一种压缩文件,使用了ZIP压缩格式。
一、如何创建 JAR 文件?
可使用 jar 工具制作 JAR 文件:[位于 JAVA_HOME/bin]
创建一个新的 JAR 文件的常用语法:
$ jar cvf jarFileName file1 file2 ...
例如:
$ jar cvf HelloWorld.jar *.class
jar命令的基本格式如下:
$ jar options file1 file2 ...
命令行参数说明:
选项 | 说明 |
---|---|
c | 创建新档案 |
C | 更改为指定的目录并包含以下文件 |
e | 在清单文件中创建一个入口点 |
f | 指定档案的文件名 |
i | 为指定的 jar 文件生成索引信息 |
m | 将一个清单文件添加到 JAR 文件中 |
M | 不为条目创建清单文件 |
t | 列出档案目录 |
u | 更新现有档案 |
v | 生成详细的输出结果 |
x | 从档案中提取指定(或所有)文件 |
0 | 仅存储,不适用任何 ZIP 压缩 |
二、什么是清单文件?
清单文件:用于描述归档文件的特殊特性,每个 JAR 只有一个。
位于 JarFileName/META-INF/MANIFEST.MF
符合标准的最小清单文件:
Manifest-Version: 1.0
复杂的清单文件构成:
复杂的清单文件包含更多属性,这些属性分为多个节。
第一节:被称为主节:作用与整个 JAR 文件
其他节:用来指定命名实体的属性,如单个文件、包、或URL,必须包含Name属性名。
节与节之间,使用空行进行分割。
Manifest-Version: 1.0
描述信息
Name: HelloWorld.class
描述信息
Name: HelloWorld2.class
描述信息
...
如何编辑清单文件:
-
不存在Jar文件,创建时指定清单文件
jar cvfm JarFileName manifest.mf *.class
-
已存在Jar文件,更新指定清单文件,需要将追加的内容先写到一个文件,再使用命令行追加到 Jar文件中:
jar ufm JarFileName appendFileName.mf
三、如何创建一个可执行 JAR 文件?
-
使用命令行指定程序入口点
$ jar cvfe HelloWorld.jar HelloWorld *.class
-
在清单文件中指定程序主类,不用加 .class 扩展名
Main-Class: HelloWorld
启动方式为:
$ java -jar HelloWorld.jar
四、更多关于JAR 文件的操作,请参考官方文档
官方文档链接:
https://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html