The Java(Java教程 Java培訓  Archive (JAR) File Format JAR文件是用ZIP文件格式打包的,所以你可以在一些類似ZIP的任務中使用它,進行壓縮、解壓、打包或者解開包。這些都是JAR文件最普遍的使用方式,你能發現許多JAR文件的優勢都是源自這些基本的特點。

  即使你希望能夠使用JAR中那些先進的功能比如電子簽名,你也得先熟悉一些基本的操作方式。

  你可以使用Java Archive Tool 來完成JAR文件操作。這個工具被包含在JDK中。因為Java Archive Tool 通過jar命令來調用,為了方便,我們也可以稱它為jat tool.

  下面是最基本的命令操作:

  操作 命令創建一個JAR文件。 jar cf jar-file input-file(s)

  查看JAR文件的內容 jar tf jar-file導出JAR文件 jar xf jar-file導出JAR文件中制定的文件包 jar xf jar-file archived-file(s)

  運行JAR文件中的應用jre -cp app.jar MainClass運行用JAR格式打包的應用java -jar app.jar調用一個打包成JAR的applet 下面是一些詳細的介紹:

  創建JAR文件

  jar -cf jar-file input-file(s)

  其中c表示create,f表示file,后面緊跟jar-file.也可以增加一個v選項(verbose),以顯示詳細信息 jar -cvf jar-file input-file(s)

  其實這些命令跟常見的tar打包命令類似,方便記憶。

  另外,在1.2的版本中還設置了一種 -C 的選項。可以讓某些文件夾中的文件直接被打包到根目錄下,而沒有原始的層次結構的束縛。如下例:jar cf ImageAudio.jar -C images * -C audio *結果是META-INF/MANIFEST.MF cross.gif nor.gif beep.au ding.au return.au yahoo1.au yahoo2.au

  如果不用 -C選項,直接打包:

  jar cf ImageAudio.jar images audio

  結果如下:META-INF/MANIFEST.MF image/cross.gif image/nor.gif audio/beep.au audio/ding.au audio/return.au audio/yahoo1.au audio/yahoo2.au

  查看JAR文件中的內容You can這時候并沒有解壓jar文件,直接查看文件內容。

  jar tvf TicTacToe.jar同樣的,也可以增加 -v 選項(verbose),顯示詳細的查看過程。

  解壓JAR文件包

  將jar文件包中的內容解壓出來,在當前工作目錄下(而不是jar文件包所在目錄)創建解壓文件包。

  當然,也可以定向的解壓指定的文件。如下,其中僅有TicTacToe.class images/cross.gif將會被解壓出來。

  jar xf TicTacToe.jar TicTacToe.class images/cross.gif

  修改Manifest文件有不少修改Manifest文件的方法。這里介紹一種用jar指令修改的方法。

  有一個m選項,可以將用戶自己編輯的manifest文件同其他文件夾一起打包為JAR文件。

  jar cmf manifest-addition jar-file input-file(s)

  這里 manifest-addition 是用戶自己編輯好的文本文件,文件名沒有特殊要求,內容為需要寫入JAR的manifest文件內容。其他的跟創建JAR文件一樣。

  更新JAR文件

  jar uf jar-file input-file(s)

  當input-file(s)跟JAR文件中原有的文件同名時,則覆蓋掉原來的文件。如果沒有,則添加相應文件。

  添加修改Manifest文件的命令選項后,也可以實現對manifest的更新。

  jar umf manifest jar-file注意其中manifest為txt文件,內容是需要更新的manifest文件內容。jar-file則為對應的JAR文件。

  Running JAR-Packaged Software

  java -jar jar-file

  以上命令執行的條件是 JAR的Manifest文件中具有 Main-Class: 標記。這個標記標明了整個JAR為相應的主類服務,這個主類中必須含有static main 程序入口。

  理解Manifest文件

  JAR文件能夠支持許多功能,包括電子簽名,版本控制,包加密,擴展等等。這些都是manifest文件的功勞!

  manifest是一個特殊的文本文件,JAR文件包中所有文件的信息都可以包含在其中。通過在manifest中設置不同的值,你能給JAR包增添各種不同的特殊用途。

  在我們看各種不同的用途之前,先看看manifest的默認內容:文件的默認路徑是

  META-INF/MANIFEST.MF默認內容是

  Manifest-Version: 1.0這一行展示了manifest的基本的格式:鍵值對。鍵和值用":"分開。默認manifest中展示了版本號。

  Manifest-Version: 1.0

  Name: java/math/BigDecimal.class

  SHA1-Digest: TD1GZt8G11dXY2p4olSZPc5Rj64=

  MD5-Digest: z6z8xPj2AW/Q9AKRSF0cg==

  Name: java/math/BigInteger/class

  SHA1-Digest:oB1GZt8G11dXY2p4olSZPc5Rj64=

  MD5-Digest: z6z8xPj2AW/8HAKRSF0cg==

  這里展示了JAR文件中,不同。class文件的不同屬性。Name標記了不同的子文件,之后的SHA1_Digest則是對應文件的屬性。

  Main-Class: classname Mani-Class鍵標記了整個JAR文件運行的主類。即整個JAR作為一個應用運行時的程序入口。

  Class-Path: servlet.jar infobus.jar acme/beans.jar Class-Path鍵標記了需要下載的擴展包。