jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目錄] 文件名 …java
其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一個,它們分別表示:spa
-c 建立新的 JAR 文件包code
-t 列出 JAR 文件包的內容列表編譯
-x 展開 JAR 文件包的指定文件或者全部文件class
-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)打包
[vfm0M] 中的選項能夠任選,也能夠不選,它們是 jar 命令的選項參數file
-v 生成詳細報告並打印到標準輸出引用
-f 指定 JAR 文件名,一般這個參數是必須的方法
-m 指定須要包含的 MANIFEST 清單文件項目
-0 只存儲,不壓縮,這樣產生的 JAR 文件包會比不用該參數產生的體積大,但速度更快
-M 不產生全部項的清單(MANIFEST〕文件,此參數會忽略 -m 參數
建立jar包並顯示打包過程
jar -cvf filename.jar files
建立可執行jar包並顯示打包過程
jar -cvfm filename.jar MANIFEST.MF files
查看jar包中的文件
jar -tf filename.jar
解壓jar包並顯示打包過程
jar -xvf filename.jar
向jar包中添加文件
jar -uf filename.jar files
(加-C參數,表示先切換到TEST目錄下在執行jar -cvf命令)
JAR -CVF FILENAME.JAR -C TEST/
執行不帶MANIFEST文件的jar包
java -classpath filename.jar MainClass
例若有一個類叫helloworld裏邊有main方法代碼以下:
public class helloworld{ public static void main(String[]args){ System.out.println("hello world"); } }
而後將他編譯打成jar包,沒有指定添加MANIFEST.MF文件或沒有執定main方法所在的類,使用java -jar helloworld.jar會報no main manifest attribute, in helloworld.jar錯誤,這種狀況就能夠使用java -classpath helloworld.jar helloworld命令指定main class執行
執行jar包中包含jar包的jar包
java -classpath inner.jar -jar filename.jar
有時候咱們須要引用第三方的jar包,咱們打包的時候就須要把第三方jar包一塊兒打到jar包中,這時候有兩種方法:
第一種把第三方的jar包解壓後與項目一塊兒打包
第二種使用上邊的命令去執行,例若有一個第三方的jar包叫inner.jar與項目一塊兒打包成jar文件叫helloworld.jar使用java -jar命令去執行會報找不到class異常,就須要使用上邊的命令java -classpath inner.jar -jar helloworld.jar