標籤:man bin 檔案的 應用 標準輸出 r檔案 處理 int 順序
java編程中每天都用不少jar檔案,項目開發中不停地導包,在忙完了一天的工作,放下那些複雜的業務實現,不僅想問這些jar包怎麼產生的,jar包有哪些獨特的地方等等。
原來這些經常見到的jar包是jar命令產生的,java語言為我們在安裝jdk的時候,就隨jdk為我們在bin目錄中安裝好了,在windows系統中是jar.exe程式,Linux系統中為jar檔案。
jar命令有產生,查看,更新或解開jar包的作用。jar包與其他的壓縮包很相似,不過它包含了META-INF/MANIFEST.MF檔案,它是jar包產生的時候,自動建立的。
jar命令的參數詳解:
C:\>jar cf lm.jar
‘c‘ 標誌要求指定清單或輸入檔案!
用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
選項包括:
-c 建立新的歸檔檔案
-t 列出歸檔目錄
-x 解壓縮已歸檔的指定(或所有)檔案
-u 更新現有的歸檔檔案
-v 在標準輸出中產生詳細輸出
-f 指定歸檔檔案名稱
-m 包含指定資訊清單檔中的清單資訊
-e 為捆綁到可執行 jar 檔案的獨立應用程式
指定應用程式進入點
-0 僅儲存;不使用任何 ZIP 壓縮
-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/ .
執行個體1.
C:\>jar cf lm.jar Lm.class Lm.java
結果:在c盤下建立了Executable Jar File類型的lm.jar包。
執行個體2.添加v參數顯示打包詳細過程,
C:\jar>jar cvf lm.jar Lm.class
標明清單(manifest)
增加:Lm.class(讀入= 410) (寫出= 283)(壓縮了 30%)
其中c參數表示建立jar包,f參數是指定的jar包檔案名稱。在使用jar命令的時候,要指定必須的參數,告訴他你要做什麼操作。這些參數包括
-c 建立新的歸檔檔案
-t 列出歸檔目錄
-x 解壓縮已歸檔的指定(或所有)檔案
-u 更新現有的歸檔檔案
執行個體3.運行剛產生的jar包:
C:\>java -jar lm.jar
Failed to load Main-Class manifest attribute from
lm.jar
根據英文錯誤提示,好像讀取lm.jar包的manifest屬性失敗。
執行個體4.建立不包含META-INF/MANIFEST.MF檔案的jar包
C:\jar>jar cvfM lm1.jar Lm.class
增加:Lm.class(讀入= 410) (寫出= 283)(壓縮了 30%)
執行個體5.顯示jar包中的檔案
C:\jar>jar tf lm.jar
META-INF/
META-INF/MANIFEST.MF
Lm.class
執行個體6.由於建立jar包的時候用了M參數所以就沒有META-INF目錄和META-INF/MANIFEST.MF檔案
C:\jar>jar tf lm1.jar
Lm.class
執行個體7.顯示jar包的檔案和檔案詳細資料
C:\jar>jar tvf lm.jar
0 Mon Sep 26 23:09:34 CST 2011 META-INF/
75 Mon Sep 26 23:09:34 CST 2011 META-INF/MANIFEST.MF
410 Mon Sep 26 22:09:00 CST 2011 Lm.class
這些詳細資料包括讀入的位元組,jar包中讀入的時間,目錄或檔案名稱
執行個體8.解壓jar包到目前的目錄中
C:\jar>jar xf lm.jar
不顯示任何資訊,但是解壓成功
windows下,運行可執行jar包
命令視窗執行:java -jar jar包
備忘:有時候,windows系統下,雙擊jar包的時候,不會運行jar包,反而會解壓jar包。所以讓jar包運行起來,則需要命令執行。
【轉】學習jar命令 建立和解壓jar檔案包