天天看點

Java_JAR

JAR全稱是Java Archive File。jar檔案與zip檔案的差別就是在生成jar檔案時會預設包含一個名為META-INF/MANIFEST.MF的清單檔案。如果把類檔案打包成為一個jar包,别人就可以通過在環境變量中添加這個jar檔案來使用它。Java虛拟機會自動解壓這個jar包,并把這個jar包當做一個路徑,在這個路徑中尋找所需要的類或包層次對應的路徑結構。

一. jar指令詳解:

Java_JAR

1. 建立jar檔案:jar cf test.jar test

該指令沒有顯示壓縮過程,執行結果是将目前路徑下的test路徑下的全部内容生成一個test.jar。如果目前目錄下有一個test.jar,則會覆寫。

2. 建立jar檔案,并顯示壓縮過程:jar cvf test.jar test

3. 不生成清單檔案META-INF/MANIFEST:jar cvfM test.jar test

4. 自定義清單檔案内容:jar cvfm test.jar manifest.mf test

生成的jar包中的META-INF/MANIFEST檔案内容除了預設的内容之外,還增加了manifest.mf中的内容。

5. 檢視jar包内容:jar tf test.jar

6. 檢視jar包詳細内容:jar tvf test.jar

7. 解壓縮:jar xf test.jar

8. 帶提示資訊解壓縮:jar xvf test.jar

9. 更新jar檔案:jar uf test.jar Hello.class

更新test.jar中Hello.class檔案。如果test.jar中有Hello.class檔案,則替換該檔案;如沒有該檔案,則向jar包中添加Hello.class。

10. 更新是顯示詳細資訊:jar uvf test.jar Hello.class

二. 建立可執行的jar包

建立可執行的jar包關鍵在于讓javaw指令知道jar包中哪個是主類,這就需要借助清單檔案。在清單檔案中加入下面一行:

Main-Class: test.Test

上面一行指定了jar包中主類是test.Test。但是如何向清單檔案中添加這一行呢?這就需要我們把上面一行内容放到一個單獨的屬性檔案裡,然後借助前面的jar cvfm指令。然而,Java對這種屬性檔案有非常嚴格的要求,上面一行内容的嚴格格式應該是:Main-Class:<空格>test.Test<回車>。

屬性檔案的要求有:

1. 每行隻能定義一個key-value對,而且前面不能有空格,即key-value對必須頂格寫;

2. 每個key-value對之間必須以一個冒号和一個空格分隔,少了冒号或空格都是不可以的;

3. 檔案開頭不能有空行;

4. 檔案必須以一行空行結束,是以前面Main-Class: test.Test後面必須有一個回車。

運作jar包有兩種方式:

1. java -jar test.jar

2. javaw test.jar