使用JAR文件

本文內容摘自李剛老師《瘋狂Java講義》一書

什麼是JAR文件

JAR文件的全稱是Java Archive File,意思就是Java檔案文件。通常JAR文件是一種壓縮文件,與我們常見的ZIP壓縮文件兼容,通常也被稱爲JAR包。JAR文件與ZIP文件的區別就是在JAR文件中默認包含了一個名爲META-INF/MANIFEST.MF的清單文件,這個清單文件是在生成JAR文件時由系統自動創建的。

如下是rt.jar包的結構
在這裏插入圖片描述
當開發了一個應用程序後,這個應用程序包含了很多類,如果需要把這個應用程序提供給別人使用,通常會將這些類文件打包成一個JAR文件,把這個JAR文件提供給別人使用。只要別人在系統的CLASSPATH環境變量中添加這個JAR文件,則Java虛擬機就可以自動在內存中解壓這個JAR包,把這個JAR文件當成一個路徑,在這個路徑中查找所需要的類或包層次對應的路徑結構。

使用JAR文件的好處

使用JAR文件有以下好處

  1. 安全。能夠對JAR文件進行數字簽名,只讓能夠識別數字簽名的用戶使用裏面的東西。
  2. 加快下載速度。
  3. 壓縮。使文件變小,JAR的壓縮機制和ZIP完全相同。
  4. 包封裝。能夠讓JAR包裏面的文件依賴於統一版本的類文件。
  5. 可移植性。JAR包作爲內嵌在Java平臺內部處理的標準,能夠在各種平臺上直接使用。

jar命令詳解

jar是隨JDK自動安裝的,在JDK安裝目錄下的bin目錄中,運行它需要用到JDK安裝目錄下lib目錄中的tools.jar文件,但通常系統會自動加載tools.jar,無須我們顯式設置。

1.創建JAR文件:jar cf test.jar test

該命令沒有顯示壓縮過程,執行結果是將當前路徑下的test路徑下的全部內容生成一個test.jar文件。如果當前目錄中已經存在test.jar文件,那麼該文件將被覆蓋。

2.創建JAR文件,並顯示壓縮過程:jar cvf test.jar test

在這裏插入圖片描述

3.不使用清單文件:jar cvfM test.jar test

4.自定義清單文件內容:jar cvfm test.jar manifest.mf test

其中m選項指定讀取用戶清單文件信息。因此在生成的JAR包中清單文件META-INF/MANIFEST.MF的內容有所不同,它會在原有清單文件基礎上增加manifest.mf文件的內容

5.查看JAR包內容:jar tf test.jar

在這裏插入圖片描述
當JAR包中的文件路徑和文件非常多時,直接執行該命令將無法看到包的全部內容(因爲命令行窗口能顯示的行數有限),此時可利用重定向將顯示結果保存到文件中。

jar tf xx.jar > xx.txt

執行上面命令看不到任何輸出,但命令執行結束後,將在當前路徑下生成一個xx.txt文件,該文件中保存了xx.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文件,則使用新的Hello.class文件替換原來的Hello.class文件;如果test.jar中沒有Hello.class文件,則把新的Hello.class文件添加到test.jar文件中。

10.更新時顯示詳細信息:jar uvf test.jar Hello.class

更多執行參數可以通過 jar命令來查看
在這裏插入圖片描述

創建可執行的JAR包

創建可執行的JAR包的關鍵在於:讓javaw命令知道JAR包中哪個類是主類,javaw命令可以通過運行該主類來運行程序。
jar命令有一個-e選項,該選項指定JAR包中作爲程序入口的主類的類名。因此,製作一個可執行的JAR包只要增加-e選項即可。執行命令如下

jar cvfe test.jar Test *.class

上面命令把當前目錄下的所有*.class文件都壓縮到test.jar包中,並指定使用Test類作爲程序的入口。

以下是我的實驗
在這裏插入圖片描述
運行上面的JAR包有兩種方式

  1. 使用java命令,使用java運行時的語法是:java -jar test.jar
  2. 使用javaw命令,使用javaw運行時的語法是:javaw test.jar
D:\ideawork\eHealth\eHealth-core\target\classes>java -jar xx.jar
測試資源清理的finalize方法

上面可以看到我運行jar包成功執行了指定主類

關於JAR包的技巧

JAR文件實際上就是ZIP文件,所以可以使用一些常見的解壓縮工具來解壓縮JAR文件,如windows下的WinRAR、WinZip等,以及Linux下的unzip等。使用WinRAR和WinZip等工具比使用JAR命令更加直觀、方便。

如果我們不喜歡jar命令的字符界面,也可以使用WinRAR工具來創建JAR包。因爲WinRAR工具創建壓縮文件時不會自動添加清單文件,所以需要手動添加清單文件,即需要手動建立META-INF路徑,並在該路徑下建立一個MANIFEST.MF文件。

除此之外,Java還可能生成兩種壓縮包:WAR包和EAR包。其中WAR文件是Web Archive File,它對應一個Web應用文檔;而EAR文件就是Enterprise Archive File,它對應一個企業應用文檔(通常由Web應用和EJB兩個部分組成)。實際上,WAR包和EAR包的壓縮格式及壓縮方式與JAR包完全一樣,只是改變了文件後綴而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章