JAR包是Java中所特有一种压缩文档,其实大家可以把它理解为zip包。当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你生成JAR包时,它会自动生成。
JAR包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令,它会用lib\tool.jar工具包中的类。
一.jar命令参数
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。
-c 创建一个jar包
-t 显示jar中的内容列表
-x 解压jar包
-u 添加文件到jar包中
-f 指定jar包的文件名
-v 生成详细的报告,并输出至标准设备
-m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些设置)
-0 产生jar包时不对其中的内容进行压缩处理
-M 不产生所有文件的清单文件(Manifest.mf),这个参数忽略掉-m参数的设置
-i 为指定的jar文件创建索引文件
-C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
二.示例
测试类Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("hello world");
}
}
生成class文件
javac Hello.java
如果有中文,报”编码GBK的不可映射字符”的错误,执行下面的命令。
javac -encoding UTF-8 Hello.java
打包
jar cvf hello.jar Hello.class
可运行的jar包
需要借助“manifest.mf”配置文件
Manifest-Version: 1.0
Class-Path: .
Main-Class: Hello
这里有几个点,需要注意一下:
· key和value之间,必须有一个空格。
· 最后必须预留一个空行
· Class-Path设置为 ”.” 是为了声明从当前目录开始查找
· Main-Class是包含main函数的入口类,如果有包名,需要填写完成的类名。
关于manifest.mf的具体配置,可参照官方说明:
https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html
打包
jar cvfm hello.jar manifest.mf Hello.class
此处如果manifest.mf配置不对,会被忽略,切记,此配置一定要按照上述的注意项配置。
验证打包结果
java -jar hello.jar
参考文章:
http://blog.csdn.net/marryshi/article/details/50751764