JAR包是Java中所特有一種壓縮文件,其實大家就可以把它理解為.zip包。當然也是有區別的,JAR包中有一個META-INF\MANIFEST.MF檔案,當你找成JAR包時,它會自動生成。
JAR包是由JDK安裝目錄\bin\jar.exe命令生成的,當我們安裝好JDK,設定好path路徑,就可以正常使用jar.exe命令,它會用lib\tool.jar工具包中的類。這些細節就不用管它了。
讓我們看看它怎麼麼使用吧:
一.jar命令引數:
jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目錄]檔名...
其中{ctxu}這四個引數必須選選其一。[v f m e 0 M i ]是可選引數,檔名也是必須的。
-c 建立一個jar包
-t 顯示jar中的內容列表
-x 解壓jar包
-u 新增檔案到jar包中
-f 指定jar包的檔名
-v 生成詳細的報造,並輸出至標準裝置
-m 指定manifest.mf檔案.(manifest.mf檔案中可以對jar包及其中的內容作一些一設定)
-0 產生jar包時不對其中的內容進行壓縮處理
-M 不產生所有檔案的清單檔案(Manifest.mf)。這個引數與忽略掉-m引數的設定
-i 為指定的jar檔案建立索引檔案
-C 表示轉到相應的目錄下執行jar命令,相當於cd到那個目錄,然後不帶-C執行jar命令
二.jar使用範例:
(1)建立jar包
1
|
jar cf hello.jar hello |
利用test目錄生成hello.jar包,如hello.jar存在,則覆蓋
(2)建立並顯示打包過程
1
|
jar cvf hello.jar hello |
利用hello目錄建立hello.jar包,並顯示建立過程
例:
1
|
E:\>jar cvf hello.jar hello |
標明清單(manifest)
增加:hello/(讀入= 0) (寫出= 0)(儲存了 0%)
增加:hello/TestServlet2.class(讀入= 1497) (寫出= 818)(壓縮了 45%)
增加:hello/HelloServlet.class(讀入= 1344) (寫出= 736)(壓縮了 45%)
增加:hello/TestServlet1.class(讀入= 2037) (寫出= 1118)(壓縮了 45%)
(3)顯示jar包:
jar tvf hello.jar 檢視hello.jar包的內容
指定的jar包必須真實存在,否則會發生FileNoutFoundException。
(4)解壓jar包:
1
|
jar xvf hello.jar |
解壓hello.jar至當前目錄
(5)jar中新增檔案:
1
|
jar uf hello.jar HelloWorld.java |
將HelloWorld.java新增到hello.jar包中
(6)建立不壓縮內容jar包:
1
|
jar cvf0 hello.jar *. class
|
利用當前目錄中所有的.class檔案生成一個不壓縮jar包
(7)建立帶manifest.mf檔案的jar包:
1
|
jar cvfm hello.jar manifest.mf hello |
建立的jar包多了一個META-INF目錄,META-INF止錄下多了一個manifest.mf檔案,至於manifest.mf的作用,後面會提到.
(8)忽略manifest.mf檔案:
1
|
jar cvfM hello.jar hello |
生成的jar包中不包括META-INF目錄及manifest.mf檔案
(9)加-C應用:
1
|
jar cvfm hello.jar mymanifest.mf -C hello/ |
表示在切換到hello目錄下然後再執行jar命令
(10)-i為jar檔案生成索引列表:
當一個jar包中的內容很好的時候,你可以給它生成一個索引檔案,這樣看起來很省事。
1
|
jar i hello.jar |
執行完這條命令後,它會在hello.jar包的META-INF資料夾下生成一個名為INDEX.LIST的索引檔案,它會生成一個列表,最上邊為jar包名。
(11)匯出解壓列表:
jar tvf hello.jar >hello.txt 如果你想檢視解壓一個jar的詳細過程,而這個jar包又很大,螢幕資訊會一閃而過,這時你可以把列表輸出到一個檔案中,慢慢欣賞!
(12)jar -cvf hello.jar hello/*
例如原目錄結構如下:
hello
|---com
|---org
你本想只把com目錄和org目錄打包,而這時jar命令會連同hello目洋也一塊打包進。這點大家要注意。jar命令生成的壓縮檔案會包含它後邊出的目錄。我們應該進入到hello目錄再執行jar命令。
注意:manifest.mf這個檔名,使用者可以任指定,但jar命令只認識Manifest.mf,它會對使用者指定的檔名進行相應在的轉換,這不需使用者擔心。