JAR文件的全稱是Java Archive File,意思是java檔案文件,一般JAR文件是一種壓縮文件,而且與常見的Zip文件兼容,二者的區別即是JAR擁有清單文件 (META-INF/MANIFEST.MF),這個文件是生成JAR文件時自動建立的。
jar在安裝JDK時會自動安裝,在bin目錄裏面,Windows裏是jar.exe,Lunix裏是jar。
首先輸入jar命令,系統會自動提示jar命令的用法。(運行dos命令使用的是Cmder軟件,代碼前面的「λ」不用輸入)java
λ jar 用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 選項: -c 建立新檔案 -t 列出檔案目錄 -x 從檔案中提取指定的 (或全部) 文件 -u 更新現有檔案 -v 在標準輸出中生成詳細輸出 -f 指定檔案文件名 -m 包含指定清單文件中的清單信息 -n 建立新檔案後執行 Pack200 規範化 -e 爲捆綁到可執行 jar 文件的獨立應用程序 指定應用程序入口點 -0 僅存儲; 不使用任何 ZIP 壓縮 -P 保留文件名中的前導 '/' (絕對路徑) 和 ".." (父目錄) 組件 -M 不建立條目的清單文件 -i 爲指定的 jar 文件生成索引信息 -C 更改成指定的目錄幷包含如下文件 若是任何文件爲目錄, 則對其進行遞歸處理。 清單文件名, 檔案文件名和入口點名稱的指定順序 與 'm', 'f' 和 'e' 標記的指定順序相同。 示例 1: 將兩個類文件歸檔到一個名爲 classes.jar 的檔案中: jar cvf classes.jar Foo.class Bar.class 示例 2: 使用現有的清單文件 'mymanifest' 並 將 foo/ 目錄中的全部文件歸檔到 'classes.jar' 中: jar cvfm classes.jar mymanifest -C foo/ .
舉例: ide
原文件目錄結構爲:ui
**** ├ Foder | ├file1 | ├file2 └ file3
則其生成的jar文件構內部目錄結構:idea
****.jar ├ META-INF │ └ MANIFEST.MF(清單文件) ├ Foder | ├file1 | └file2 └ file3
建立jar文件
語法以下:命令行
建立****.jar,並將file1,file2 (jar命令能夠指定多個文件) 添加到****.jar包中,如****.jar存在,則覆蓋。unix
建立****.jar,並將folderName文件夾下全部文件添加到 ****.jar包中,如****.jar存在,則覆蓋。code
建立jar文件,而且顯示壓縮過程
會輸出相似下面的信息。xml
已添加清單 正在添加: lzj.iml(輸入 = 81) (輸出 = 75)(壓縮了 7%) ........
語法與第一個命令類似遞歸
建立jar文件,但不添加清單文件,而且顯示壓縮過程.
會輸出相似下面的信息。索引
正在添加: lzj.iml(輸入 = 81) (輸出 = 75)(壓縮了 7%) ........
語法與第一個命令類似
建立jar文件,自定義清單文件內容,而且顯示壓縮過程.
語法:
在原有清單文件基礎上增長****.mf文件的內容(不論名稱是什麼均可以,可是jar包只認manifest.MF,因此係統會自動完成轉化)
清單文件可直接編輯,但有相應的內容格式要求,這裏不作過多介紹。
查看jar包文件。
例如
λ jar tf lzj.jar META-INF/ META-INF/MANIFEST.MF lzj.iml
若是JAR包內文件很是多可以使用(命令行窗口顯示的行數有限)
jar tf lzj.jar > lzj.txt
此時將再也不返回信息,文件夾下會生成一個txt文件,裏面保存着相應的信息。
加v,詳細的查看jar包文件
即jar tvf ............
例如
λ jar tvf lzj.jar 0 Sat Jul 20 16:18:02 CST 2019 META-INF/ 69 Sat Jul 20 16:18:02 CST 2019 META-INF/MANIFEST.MF 81 Sun Dec 16 16:13:00 CST 2018 lzj.iml
也可生成txt文件。
解壓縮,將jar文件解壓到當前目錄。不返回信息。
加v,即jar xvf ................
系統會顯示詳細的解壓過程
例如
λ jar xvf lzj.jar 已建立: META-INF/ 已解壓: META-INF/MANIFEST.MF 已建立: lzj/ 已建立: lzj/.idea/ 已解壓: lzj/.idea/compiler.xml 已解壓: lzj/.idea/encodings.xml 已解壓: lzj/.idea/misc.xml ................
語法
jar uf ****.jar file
將文件加入到jar文件中,若是有同名文件則替。
加v一樣能夠詳細看到過程
例如
λ jar uvf lzj.jar pom.xml 正在添加: pom.xml(輸入 = 502) (輸出 = 267)(壓縮了 46%)
爲指定的jar文件生成索引,生成在META-INF中名稱爲INDEX.LIST。