对jar不是很熟,之前遇到个关于路径的问题解决了但忘了及下来,于是现在不记得了,还是总结一下最基本的东西。。
1.命令:
{ctxu}是jar命令的子命令,每次jar命令只能包含ctxu中的一个,它们分别表示:
-c 创建新的JAR文件包
-t 列出JAR文件包的内容列表
-x 展开JAR文件包的指定文件或者所有文件
-u 更新已存在的JAR文件包(添加文件到JAR文件包中)
{vfm0M}中的选项可以任选,也可以不选,它们是jar命令的选项参数
-v 生成详细报告并打印到标准输出
-f 指定JAR文件名,通常这个参数是必须的
-m 指定需要包含的MANIFEST清单文件
-0 只存储,不压缩,这样产生的JAR文件包会比不用该参数产生的体积大,但速度更快
-M 不产生所有项的清单(MANIFEST)文件,此参数会忽略-m参数
2.最简单一般用法:
a. jar cvf test.jar book :
生成test.jar,book为目录,或者为xxx .class(不能漏class)
b. jar cvfm test.jar META-INF/MANIFEST.MF book.class:
注意命令后参数顺序与命令顺序是对应的,因为-f在-m前,所以test.jar才写在最前面, MANIFEST.MF一般放在META-INF文件夹中,所以此处写不能漏META-INF
c.jar tf test.jar
查看test.jar中内容,注意有xxx.jar的地方一定不能少f,否则。。。自己试试就知道了~
d.jar xvf test.jar
解压jar
e.jar uvf test.jar xxx.xx
向test.jar中添加xxx.xx,注意test.jar要写在前面
f.java -jar x.jar
在MANIFEST.MF中定义了in-class,该jar可执行则用该命令执行该jar
MANIFEST.MF注意事项:
Main-Class,Class-path等的冒号后一定要加一个空格,Manifest-Version和Class-Path: 之间不允许有空行。
否则:invalid header field
参考:
http://muder2007.blog.163.com/blog/static/459330702009598594551/