1. 程式人生 > >【轉】學習jar命令 創建和解壓jar文件包

【轉】學習jar命令 創建和解壓jar文件包

運行 man str 失敗 參數 int 什麽 英文 poi

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文件包