jar命令的使用

2021-08-29 14:45:48 字數 3767 閱讀 9637

[color=red]應該如何打jar包?[/color]

1.jar 命令的用法如下:

jar [vfm0m] [jar-檔案] [manifest-檔案] [-c 目錄] 檔名 ...

其中 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的乙個,它們分別表示:

-c 建立新的 jar 檔案包

-t 列出 jar 檔案包的內容列表

-x 展開 jar 檔案包的指定檔案或者所有檔案

-u 更新已存在的 jar 檔案包 (新增檔案到 jar 檔案包中)

[vfm0m] 中的選項可以任選,也可以不選,它們是 jar 命令的選項引數

-v 生成詳細報告並列印到標準輸出

-f 指定 jar 檔名,通常這個引數是必須的

-m 指定需要包含的 manifest 清單檔案

-0 只儲存,不壓縮,這樣產生的 jar 檔案包會比不用該引數產生的體積大,但速度更快

-m 不產生所有項的清單(manifest〕檔案,此引數會忽略 -m 引數

[jar-檔案] 即需要生成、檢視、更新或者解開的 jar 檔案包,它是 -f 引數的附屬引數

[manifest-檔案] 即 manifest 清單檔案,它是 -m 引數的附屬引數

[-c 目錄] 表示轉到指定目錄下去執行這個 jar 命令的操作。它相當於先使用 cd 命令轉該目錄下再執行不帶 -c 引數的 jar 命令,它只能在建立和更新 jar 檔案包的時候可用。  

檔名 ... 指定乙個檔案/目錄列表,這些檔案/目錄就是要新增到 jar 檔案包中的檔案/目錄。如果指定了目錄,那麼 jar 命令打包的時候會自動把該目錄中的所有檔案和子目錄打入包中。

下面舉一些例子來說明 jar 命令的用法:

1) jar cf test.jar test

該命令沒有執行過程的顯示,執行結果是在當前目錄生成了 test.jar 檔案。如果當前目錄已經存在 test.jar,那麼該檔案將被覆蓋。

2) jar cvf test.jar test

該命令與上例中的結果相同,但是由於 v 引數的作用,顯示出了打包過程,如下:

標明清單(manifest)

增加:test/(讀入= 0) (寫出= 0)(儲存了 0%)

增加:test/test.class(讀入= 7) (寫出= 6)(壓縮了 14%)

3) jar cvfm test.jar test

該命令與 2) 結果類似,但在生成的 test.jar 中沒有包含 meta-inf/manifest 檔案,打包過程的資訊也略有差別:

增加:test/(讀入= 0) (寫出= 0)(儲存了 0%)

增加:test/test.class(讀入= 7) (寫出= 6)(壓縮了 14%)

4) jar cvfm test.jar manifest.mf test

執行結果與 2) 相似,顯示資訊也相同,只是生成 jar 包中的 meta-inf/manifest 內容不同,是包含了 manifest.mf 的內容

5) jar tf test.jar

在 test.jar 已經存在的情況下,可以檢視 test.jar 中的內容,如對於 2) 和 3) 生成的 test.jar 分別應該此命令,結果如下;

對於 2)

meta-inf/

meta-inf/manifest.mf

test/

test/test.class

對於 3)

test/

test/test.class

6) jar tvf test.jar

除顯示 5) 中顯示的內容外,還包括包內檔案的詳細資訊,如:

0 wed jun 19 15:39:06 gmt 2002 meta-inf/

86 wed jun 19 15:39:06 gmt 2002 meta-inf/manifest.mf

0 wed jun 19 15:33:04 gmt 2002 test/

7 wed jun 19 15:33:04 gmt 2002 test/test.class

7) jar xf test.jar

解開 test.jar 到當前目錄,不顯示任何資訊,對於 2) 生成的 test.jar,解開後的目錄結構如下:

== |-- meta-inf

|  `-- manifest

`-- test

`--test.class

jar xvf test.jar

執行結果與 7) 相同,對於解壓過程有詳細資訊顯示,如:

建立:meta-inf/

展開:meta-inf/manifest.mf

建立:test/

展開:test/test.class

9) jar uf test.jar manifest.mf

在 test.jar 中新增了檔案 manifest.mf,此使用 jar tf 來檢視 test.jar 可以發現 test.jar 中比原來多了乙個 manifest。這裡順便提一下,如果使用 -m 引數並指定 manifest.mf 檔案,那麼 manifest.mf 是作為清單檔案 manifest 來使用的,它的內容會被新增到 manifest 中;但是,如果作為一般檔案新增到 jar 檔案包中,它跟一般檔案無異。

10) jar uvf test.jar manifest.mf

與 9) 結果相同,同時有詳細資訊顯示,如:

增加:manifest.mf(讀入= 17) (寫出= 19)(壓縮了 -11%)

2. 關於 jar 檔案包的一些技巧

1) 使用 unzip 來解壓 jar 檔案

在介紹 jar 檔案的時候就已經說過了,jar 檔案實際上就是 zip 檔案,所以可以使用常見的一些解壓 zip 檔案的工具來解壓 jar 檔案,如 windows 下的 winzip、winrar 等和 linux 下的 unzip 等。使用 winzip 和 winrar 等來解壓是因為它們解壓比較直觀,方便。而使用 unzip,則是因為它解壓時可以使用 -d 引數指定目標目錄。

在解壓乙個 jar 檔案的時候是不能使用 jar 的 -c 引數來指定解壓的目標的,因為 -c 引數只在建立或者更新包的時候可用。那麼需要將檔案解壓到某個指定目錄下的時候就需要先將這具 jar 檔案拷貝到目標目錄下,再進行解壓,比較麻煩。如果使用 unzip,就不需要這麼麻煩了,只需要指定乙個 -d 引數即可。如:

unzip test.jar -d dest/

2) 使用 winzip 或者 winrar 等工具建立 jar 檔案

上面提到 jar 檔案就是包含了 meta-inf/manifest 的 zip 檔案,所以,只需要使用 winzip、winrar 等工具建立所需要 zip 壓縮包,再往這個 zip 壓縮包中新增乙個包含 manifest 檔案的 meta-inf 目錄即可。對於使用 jar 命令的 -m 引數指定清單檔案的情況,只需要將這個 manifest 按需要修改即可。

3) 使用 jar 命令建立 zip 檔案

有些 linux 下提供了 unzip 命令,但沒有 zip 命令,所以需要可以對 zip 檔案進行解壓,即不能建立 zip 檔案。如要建立乙個 zip 檔案,使用帶 -m 引數的 jar 命令即可,因為 -m 引數表示製作 jar 包的時候不新增 manifest 清單,那麼只需要在指定目標 jar 檔案的地方將 .jar 副檔名改為 .zip 副檔名,建立的就是乙個不折不扣的 zip 檔案了,如將上一節的第 3) 個例子略作改動:

jar cvfm test.zip test

jar命令的使用

當你拿到乙個jar檔案並且希望替換掉jar中的某乙個class檔案,你應該怎麼做呢?以test.jar為例,放到c test目錄下面,dos視窗切換到這個目錄,執行命令 jar xf test.jar,那麼你的所有的檔案多解壓到當前目錄 然後替換對應的檔案 在重新打包 jar cvf test.ja...

jar 命令使用

1 jar命令一般用來對jar包檔案處理,jar包是由jdk安裝目錄 bin jar.exe命令生成的,當我們安裝好jdk,設定好path路徑,就可以正常使用jar.exe命令,它會用lib tool.jar工具包中的類。此處以jdk1.8.0 181版本為例,語法 jar vfmn0pme jar...

jar打包命令使用

用法 jar vfmn0pme jar file manifest file entry point c dir files 選項 說明 如果任何檔案為目錄,則對其進行遞迴處理 清單檔名,檔案檔名和入口點名稱的指定順序與 m f 和 e 標記的指定順序相同 示例1 將兩個類檔案歸檔到乙個名為 cla...