天天看點

java歸檔包類型_Java中的歸檔jar實用程式

Zip格式亦在java 1.1的JAR(Java ARchive)檔案格式中得到了采用。這種檔案格式的作用是将一系列檔案合并到單個壓縮檔案裡,就象Zip那樣。然而,同Java中其他任何東西一樣,JAR檔案是跨平台的,是以不必關心涉及具體平台的問題。除了可以包括聲音和圖像檔案以外,也可以在其中包括類檔案。

java歸檔包類型_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工具)。