jar cvf 输出文件名 文件列表
如: jar cvf test.jar a.txt b.txt
上面这种用法基本上用不到,windows上有WinRAR,Linux上有tar,没人用jar命令打包的。
用jar的时候,一般是生成java类库,或生成java可执行文件。
比如,在命令提示符下,当前目录为code,code下面有个test工程,test工程里面就是一些class文件(可能有一些Java包),这时候怎么打包?
code/test> jar cvf test.jar ./*
这样比较方便。
需要添加manifest文件的情况:
code/test> jar cvfm test.jar manifest文件名 .
需要往jar中加入一些文件,可以这样:
code/test> jar uvf test.jar 需增加的文件名
需增加的文件必须在当前目录下,并且路径与jar包中的路径一致。比如,jar包中有一个文件夹doc,需要往doc中添加一个文件a.txt,就需要在当前目录下,新建一个doc目录(存在就不用了),把a.txt放入其中。切换到code/test,输入:
code/test> jar uvf test.jar doc/a.txt即可。
有的时候,需要往jar包中放置manifest文件(或替换),将manifest.mf文件放置到code/test下,切换到code/test,输入:
code/test> jar uvfm test.jar manifest.mf
试试以下命令:
code/test> jar uvf test.jar META-INF/manifest.mf
这样,jar命令只将manifest.mf当做普通文件。如果之前的jar包中,manifest.mf是有效的,jar命令直接忽略这里输入的META/manifest.mf文件(即,jar不允许这样更新manifest文件,加上m选项就可以了)。看来,manifest文件是有些特殊的。
-c命令是做什么的?
就是一个cd命令,临时更改当前目录的。这有什么用呢?
假设code/test目录下有一个b.txt文件,还有一个doc文件夹,doc文件夹中,有一个a.txt。现在我们需要打个jar包,使得a.txt和b.txt都在jar包的根目录下:
code/test> jar cvf test.jar b.txt -C doc a.txt
也可以这样:
code/test> jar cvf test.jar -C doc a.txt b.txt
看到了,-C只对接下来的一个文件(夹)有效。可以使用多个-C,多次切换当前目录。