用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
選項:
-c 創(chuàng)建新的存檔
-t 列出存檔內(nèi)容的列表
-x 展開存檔中的命名的(或所有的〕文件
-u 更新已存在的存檔
-v 生成詳細輸出到標準輸出上
-f 指定存檔文件名
-m 包含來自標明文件的標明信息
-0 只存儲方式;未用ZIP壓縮格式
-M 不產(chǎn)生所有項的清單(manifest〕文件
-i 為指定的jar文件產(chǎn)生索引信息
-C 改變到指定的目錄,并且包含下列文件:
如果一個文件名是一個目錄,它將被遞歸處理。
清單(manifest〕文件名和存檔文件名都需要被指定,按'm' 和 'f'標志指定的相同順序。
示例1:將兩個class文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvf classes.jar Foo.class Bar.class
示例2:用一個存在的清單(manifest)文件 'mymanifest' 將 foo/ 目錄下的所有
文件存檔到一個名為 'classes.jar' 的存檔文件中:
jar cvfm classes.jar mymanifest -C foo/ .
PS:
使用該命令時可能會遇到的問題
如上面的示例2. 在windows環(huán)境下,對整個文件夾打包時可能會出現(xiàn)找不到main class。
測試環(huán)境如下:
操作系統(tǒng):windows xp
jdk版本:1.6
假設你的待打包的類的根目錄是“d:\workspace\com”,main類的路徑是“d:\workspace\com\java\test.class”。
那么當你的命令行在“d:\workspace>”下如示例2般對整個com文件夾進行打包,運行“jar cvfm test.jar mymanifest -C com/ .”命令時,生成的test.jar運行時會出現(xiàn)“找不到main class”的錯誤。
用壓縮軟件打開該jar包,會發(fā)現(xiàn)在點開“com”文件夾時,除了“..”(返回到上層目錄)外,還會出現(xiàn)“./java”和“.”這兩個文件夾。正常情況下應該是“..”和“java”才對。這樣破壞的了原來的路徑。
解決方案:
1、在“d:\workspace>”目錄下運行“jar cvfm test.jar mymanifest com”命令;
2、在“d:\>”目錄下運行“jar cvfm test.jar mymanifest -C workspace\ .”或“jar cvfm test.jar mymanifest -C workspace .”命令(前提是workspace下只有com這么一個文件夾,因為該命令不會把workspace給包含進去,而是對workspace中的內(nèi)容進行打包;或者把com文件夾放到另一個新建的文件夾中)。