jar用法

      java 2004-8-20 22:31
结构

jar [ options ] [manifest] destination input-file [input-files]


说明
jar 工具是个 java 应用程序,可将多个文件合并为单个 JAR 归档文件。jar 是个多功能的归档及压缩工具,它基于 ZIP 和 ZLIB 压缩格式。然而,设计 jar 的主要目的是便于将 java applet 或应用程序打包成单个归档文件。将 applet 或应用程序的组件( .class 文件、图像和声音)合并成单个归档文件时,可以用 java 代理(如浏览器)在一次 HTTP 事务处理过程中 对它们进行下载,而不是对每个组件都要求一个新连接。这大大缩短了下载时间。jar 还能压缩文件,从而进一步缩短了下载时间。此外,它允许 applet 的作者对文件中的各个项进行签名,从而可认证其来源。jar 工具的语法基本上与 tar 命令的语法相同。

jar 工具的输入文件分为三种类型:

清单文件(可选)
目标 jar 文件
待归档的文件
通常用法是:

    % jar cf myjarfile *.class

在这个示例中,当前目录中的所有类文件都被放置到名为 "myjarfile" 的文件中。清单文件由 jar 工具自动生成,并且始终是 jar 文件的第一项。缺省情况下,它被命名为 META-INF/MANIFEST.MF。清单文件是存储与归档有关的元信息的地方。有关如何将元信息储存到清单文件的详细信息,参见清单规范。

如果事先已有一个清单文件且希望 jar 工具将它用于新的 jar 归档,则可以用 -m 选项来指定它:

    % jar cmf myManifestFile myJarFile *.class

清单使用 RFC822 ascii 格式,因此,很容易查看和处理“清单文件”目录。

选项
 
可用以字母 '@' 开头的参数指定包含额外参数的文件,此文件一行一个参数。这些参数插入命令行的 '@<filename>' 参数所在之处。

c
在标准输出上创建新归档或空归档。
t
在标准输出上列出目录表。
 
x file
从标准输入提取所有文件,或只提取指定的文件。如果省略了 file,则提取所有文件;否则只提取指定文件。
 
f
第二个参数指定要处理的 jar 文件。在 c (创建)情形中,第二个参数指的是要创建的 jar 文件的名称(不是在标准输出上)。在 t(表)或 x(提取)这两种情形中,第二个参数指定要列出或提取的 jar 文件。
 
v
在标准输出设备上生成冗长的输出结果。
 
m
包括指定的现有清单文件中的清单信息。用法举例:
jar cmf myManifestFile myJarFile *.class

0
只储存,不进行 ZIP 压缩。
 
M
不创建项的清单文件。
 
u
通过添加文件或更改清单来更新现有的 JAR 文件。例如:
jar -uf foo.jar foo.class

将文件 foo.class 添加到现有的 JAR 文件 foo.jar 中,而

jar umf manifest foo.jar

则用 manifest 中的信息更新 foo.jar 的清单。

-C
在执行 jar 命令期间更改目录。例如:
jar -uf foo.jar -C classes *

将 classes 目录内的所有文件加到 foo.jar 中,但不添加类目录本身。

如果有的“files”是目录,则该目录将被递归处理。

示例
将某个特定目录中的所有文件加到归档文件中:

C:\WWWROOT\JAVA> ls
12/09/96 12:20a <DIR> .
12/09/96 12:17a <DIR> ..
12/09/96 12:18a 1,010 0.au
12/09/96 12:18a 946 1.au
12/09/96 12:18a 1,039 2.au
12/09/96 12:18a 993 3.au
12/09/96 12:18a 1,006 4.au
12/09/96 12:18a 1,016 5.au
12/09/96 12:18a 1,048 6.au
12/09/96 12:18a 980 7.au
12/09/96 12:18a 1,064 8.au
12/09/96 12:18a 989 9.au
12/09/96 12:19a 48,072 spacemusic.au
12/09/96 12:19a 527 at_work.gif
12/09/96 12:19a 12,818 monkey.jpg
12/09/96 12:19a 16,242 Animator.class
12/09/96 12:20a 3,368 Wave.class
17 File(s) 91,118 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA> jar cvf bundle.jar *
adding: 0.au
adding: 1.au
adding: 2.au
adding: 3.au
adding: 4.au
adding: 5.au
adding: 6.au
adding: 7.au
adding: 8.au
adding: 9.au
adding: Animator.class
adding: Wave.class
adding: at_work.gif
adding: monkey.jpg
adding: spacemusic.au
C:\WWWROOT\JAVA>

如果您的 html 目录中已有图像、音频文件和类的子目录,可以将每个目录归档到单个 jar 文件中:

C:\WWWROOT\JAVA> DIR
12/09/96 12:11a <DIR> .
12/09/96 12:17a <DIR> ..
12/03/96 06:54p <DIR> audio
12/06/96 02:02p <DIR> images
12/09/96 12:10a <DIR> classes
6 File(s) 207,360 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA> jar cvf bundle.jar audio classes images
adding: audio/1.au
adding: audio/2.au
adding: audio/3.au
adding: audio/spacemusic.au
adding: classes/Animator.class
adding: classes/Wave.class
adding: images/monkey.jpg
adding: images/at_work.gif
C:\WWWROOT\JAVA\Animator> dir
12/09/96 12:11a <DIR> .
12/09/96 12:17a <DIR> ..
12/09/96 12:11a 207,360 bundle.tar
12/03/96 06:54p <DIR> audio
12/06/96 02:02p <DIR> images
12/09/96 12:10a <DIR> classes
6 File(s) 207,360 bytes
414,983,168 bytes free

C:\WWWROOT\JAVA\Animator>

然后可以用 jar 工具和 "t" 选项查看 jarfile 中的项名:

C:\WWWROOT\JAVA\Animator> jar tf bundle.jar
META-INF/MANIFEST.MF
audio/1.au
audio/2.au
audio/3.au
audio/spacemusic.au
classes/Animator.class
classes/Wave.class
images/monkey.jpg
images/at_work.gif
C:\WWWROOT\JAVA\Animator>

用长格式进行列举(用 "v" 选项)将显示归档文件中各文件的更为详细的信息,例如各文件的大小和上次修改时间:

C:\WWWROOT\JAVA\Animator> jar tvf bundle.jar
145 Thu Aug 01 22:27:00 PDT 1996 META-INF/MANIFEST.MF
946 Thu Aug 01 22:24:22 PDT 1996 audio/1.au
1039 Thu Aug 01 22:24:22 PDT 1996 audio/2.au
993 Thu Aug 01 22:24:22 PDT 1996 audio/3.au
48072 Thu Aug 01 22:24:23 PDT 1996 audio/spacemusic.au
16711 Thu Aug 01 22:25:50 PDT 1996 classes/Animator.class
3368 Thu Aug 01 22:26:02 PDT 1996 classes/Wave.class
12809 Thu Aug 01 22:24:48 PDT 1996 images/monkey.jpg
527 Thu Aug 01 22:25:20 PDT 1996 images/at_work.gif
C:\WWWROOT\JAVA\Animator>

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}