JAR命令詳解
jar {ctxu}[vfm0M] [jar-檔案] [manifest-檔案] [-C 目錄] 檔名 …
-
其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一個,它們分別表示:
-
-c 建立新的 JAR 檔案包
-
-t 列出 JAR 檔案包的內容列表
-
-x 展開 JAR 檔案包的指定檔案或者所有檔案
-
-u 更新已存在的 JAR 檔案包 (新增檔案到 JAR 檔案包中)
-
-
[vfm0M] 中的選項可以任選,也可以不選,它們是 jar 命令的選項引數
-
-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/
JAVA執行JAR包
執行不帶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