Java归档(jar)实用措施
Zip名目亦在Java 1.1的JAR(Java ARchive)文件名目中获得了回收。这种文件名目标浸染是将一系列文件归并到单个压缩文件里,就象Zip那样。然而,同Java中其他任何对象一样,JAR文件是跨平台的,所以不必体贴涉及详细平台的问题。除了可以包罗声音和图像文件以外,也可以在个中包罗类文件。
涉及因特网应用时,JAR文件显得出格有用。在JAR文件之前,Web欣赏器必需反复多次请求Web处事器,以便下载完组成一个“措施片”(Applet)的所有文件。除此以外,每个文件都是未经压缩的。但在将所有这些文件归并到一个JAR文件里今后,只需向长途处事器发出一次请求即可。同时,由于回收了压缩技能,所以可在更短的时间里得到全部数据。别的,JAR文件里的每个进口(条目)都可以加上数字化签名(详情参考Java用户文档)。
一个JAR文件由一系列回收Zip压缩名目标文件组成,同时尚有一张“详情单”,对所有这些文件举办了描写(可建设本身的详情单文件;不然,jar措施会为我们代庖)。在联机用户文档中,可以找到与JAR详情单更多的资料(详情单的英语是“Manifest”)。
jar实用措施已与Sun的JDK配套提供,可以按我们的选择自动压缩文件。请在呼吁行挪用它:
jar [选项] 说明 [详情单] 输入文件
个中,“选项”用一系列字母暗示(不必输入连字号或其他任何指示符)。如下所示:
c 建设新的或空的压缩档
t 列出目次表
x 解压所有文件
x file 解压指定文件
f 指出“我筹备向你提供文件名”。若省略此参数,jar会假定它的输入来自尺度输入;可能在它建设文件时,输出会进入尺度输出内
m 指出第一个参数将是用户自建的详情表文件的名字
v 发生具体输出,对jar做的事情举办大小无遗的描写
O 只生存文件;不压缩文件(用于建设一个JAR文件,以便我们将其置入本身的类路径中)
M 不自动生成详情表文件
在筹备进入JAR文件的文件中,若包罗了一个子目次,谁人子目次会自动添加,个中包罗它本身的所有子目次,以此类推。路径信息也会获得保存。
下面是挪用jar的一些典范要领:
jar cf myJarFile.jar *.class
用于建设一个名为myJarFile.jar的JAR文件,个中包括了当前目次中的所有类文件,同时尚有自动发生的详情表文件。
jar cmf myJarFile.jar myManifestFile.mf *.class
与前例雷同,但添加了一个名为myManifestFile.mf的用户自建详情表文件。
jar tf myJarFile.jar
生成myJarFile.jar内所有文件的一个目次表。
jar tvf myJarFile.jar
添加“verbose”(详尽)符号,提供与myJarFile.jar中的文件有关的、更具体的资料。
jar cvf myApp.jar audio classes image
假定audio,classes和image是子目次,这样便将所有子目次归并到文件myApp.jar中。个中也包罗了“verbose”符号,可在jar措施事情时反馈更详尽的信息。
假如用O选项建设了一个JAR文件,谁人文件就可置入本身的类路径(CLASSPATH)中:
CLASSPATH="lib1.jar;lib2.jar;"
Java能在lib1.jar和lib2.jar中搜索方针类文件。
jar东西的成果没有zip东西那么富厚。譬喻,不可以或许添加或更新一个现成JAR文件中的文件,只能从新开始新建一个JAR文件。另外,不能将文件移入一个JAR文件,并在移动后将它们删除。然而,在一种平台上建设的JAR文件可在其他任何平台上由jar东西毫无阻碍地读出(这个问题有时会困扰zip东西)。
正如各人在第13章会看到的那样,我们也用JAR为Java Beans打包。