用jar命令打包java中class文件:
1、不指定清单文件和Main-Class的打包方式(这种打包只能作为类库,不能直接运行)

E:MyJar>javac -encoding utf8 -d . MyJar.java
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

E:MyJar>java com.zls.wlk.myjar.MyJar
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
java中jar命令练习

E:MyJar>jar -cvf myjar.jar com/zls/wlk/myjar/MyJar.class
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
已添加清单
正在添加: com/zls/wlk/myjar/MyJar.class(输入 = 444) (输出 = 322)(压缩了 27%)

E:MyJar>java -jar myjar.jar
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
myjar.jar中没有主清单属性

E:MyJar>

也可以打包某个目录:

E:>jar -cvf myjar.jar MyJar
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
已添加清单
正在添加: MyJar/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: MyJar/com/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: MyJar/com/zls/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: MyJar/com/zls/wlk/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: MyJar/com/zls/wlk/myjar/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: MyJar/com/zls/wlk/myjar/MyJar.class(输入 = 444) (输出 = 322)(压缩了 27%)
正在添加: MyJar/myjar.jar(输入 = 814) (输出 = 594)(压缩了 27%)
正在添加: MyJar/MyJar.java(输入 = 147) (输出 = 139)(压缩了 5%)

2、清单文件学习:

文件所在路径:在jar包的META-INF目录下,文件名是:MANIFEST.MF(myjar.jar\META-INF\MANIFEST.MF)

文件格式如下截图所示:

java jar 指定函数 java执行jar包中指定class文件_JAVA

 

 

 其中清单文件中我们感兴趣的属性是:Main-Class属性,这个属性用于指定JAR文件中包含main方法的类,设置了该属性,就可以让一个JAR文件变成可执行文件。

2、打包时指定Main-Class(jar -cvfe jar文件名.jar main方法所在类的类名 要打包的文件名),此时jar包就变成可执行文件。

1 E:\MyJar>jar -cvfe myjar02.jar com.zls.wlk.myjar.MyJar com/zls/wlk/myjar/*.class
 2 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
 3 已添加清单
 4 正在添加: com/zls/wlk/myjar/MyJar.class(输入 = 444) (输出 = 322)(压缩了 27%)
 5 
 6 E:\MyJar>java -jar myjar02.jar
 7 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
 8 java中jar命令练习
 9 
10 E:\MyJar>

加了e后打包的jar包生成的清单文件就多了Main-Class属性,见如下截图所示:

java jar 指定函数 java执行jar包中指定class文件_JAVA_02

 

 

3、指定MANIFEST.MF(jar -cvfm jar文件名.jar 清单文件名 类文件),提前把文件清单修改后,在打包时打包到jar包

1 E:\MyJar>jar -cvfm myjar03.jar MANIFEST.MF com/zls/wlk/myjar/*.class
 2 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
 3 已添加清单
 4 正在添加: com/zls/wlk/myjar/MyJar.class(输入 = 444) (输出 = 322)(压缩了 27%)
 5 
 6 E:\MyJar>java -jar myjar03.jar
 7 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
 8 java中jar命令练习
 9 
10 E:\MyJar>

指定的文件清单内容如下截图:

java jar 指定函数 java执行jar包中指定class文件_JAVA_03

 

 好了,今天就讲到这里,希望读者有收获,下课。