【jar命令的用法詳解】

lijieshare發表於2017-12-31

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,它會對使用者指定的檔名進行相應在的轉換,這不需使用者擔心。
 

相關文章