jar包相關命令詳解

來源:互聯網
上載者:User

在最近,因為老師要求我總結一下有關jar命令的相關知識,所以整合了許多資料,作了以下的總結:

1.      Jar 檔案包:  JAR 檔案就是 Java Archive File,是 Java 的一種文檔格式。JAR 檔案非常類似 ZIP 檔案,更準確的說,它就是 ZIP 檔案,所以叫它檔案包。JAR 檔案與 ZIP 檔案唯一的區別就是在 JAR 檔案的內容中,包含了一個 META-INF/MANIFEST.MF 檔案,這個檔案是在產生 JAR 檔案的時候自動建立的。  2. 建立 jar 檔案包:         Jar檔案包分為兩類:可執行jar檔案包和不可執行檔jar檔案包。它們的區別是jar檔案包裡META-INF/MANIFEST.MF檔案是否jar指定了包含入口函數public static void main(String[]) 方法的主類。至於如何編寫MANIFEST.MF,下文會提及。 2.1 建立不可執行檔 jar 檔案包:        如果你建立一個jar檔案包,僅僅用於打包你的.class位元組碼檔案,不需要它們直接雙擊就能啟動並執行話或者要打包一些不含主類的.class位元組碼檔案,那麼你可以建立不可執行檔jar檔案包。       jar cvf [jar包檔案名稱] [要打包的.class檔案或包含全部.class檔案的檔案夾]       例2-1:jar cvf test.jar X.class Y.class       打包過後jar包裡包含META-INF檔案夾,而該檔案夾裡有MANIFEST.MF,這都是自動被建立的;而與META-INF檔案夾同級目錄下則包含了被打包的X.class和 Y.class。       例2-2:jar cvf test.jar bao       打包過後, jar包裡包含META-INF檔案夾,而該檔案夾裡有MANIFEST.MF,這都是自動被建立的;而與META-INF檔案夾同級目錄下則包含了檔案夾bao。 2.2 建立可執行檔 jar 檔案包:  製作一個可執行檔 JAR 檔案包來發布你的程式是 JAR 檔案包最典型的用法。建立可執行檔 JAR 檔案包,需要使用帶 cvfm 參數的 jar 命令(這是建立可執行jar檔案包一般使用的參數,下文會對參數有詳細的解釋),命令的格式如下:jar cvfm [jar包檔案名稱] manifest.mf  [要打包的.class檔案或包含全部.class檔案的包]       例2-3:jar cvfm test.jar manifest.mf X.class Y.class       打包後的目錄結構與2.1相同,但是最大的區別是在jar檔案包的META-INF/MANIFEST.MF中指明了主類。那麼就要求我們在打包之前先建立一個自己的MANIFEST.MF。而在 MANIFEST.MF 中書寫格式如下(假設X.class為主類):       Main-Class: 可執行主類全名(包含包名) <斷行符號>       例如:Main-Class: X<斷行符號符> 注意:MANIFEST 中書寫的關鍵在於Main-Class:與可執行主類全名(包含包名)要留一空格,而且必須以一空行結束,即是以一個斷行符號符結束。除此之外,建立的 JAR 檔案包中需要包含完整的、與 Java 程式的包結構對應的目錄結構。而 Main-Class 指定的類,也必須是完整的、包含包路徑的類名。繼續以上面為例,假設X.class和Y.class都在包bao中,並且X.class為主類例2-4:建立jar包的命令為:       jar cvfm test.jar manifest.mf bao而在manifest.mf 中書寫為:       Main-Class: bao.X<斷行符號符>打包過後, jar包裡包含META-INF檔案夾,而該檔案夾裡有MANIFEST.MF,這都是自動被建立的;而與META-INF檔案夾同級目錄下則包含了包bao。       運行可執行jar檔案包,可直接雙擊jar檔案包,或在命令列中輸入 java –jar [要啟動並執行jar檔案包],或者建立一個.bar批次檔,內容編輯為java –jar [要啟動並執行jar檔案包],放在與jar檔案夾同一目錄下,直接雙擊該檔案也可運行  3.jar 命令詳解   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 檔案包,它是 -f 參數的附屬參數  [manifest- 檔案] 即 MANIFEST 資訊清單檔,它是 -m 參數的附屬參數  [-C 目錄] 表示轉到指定目錄下去執行這個 jar 命令的操作。它相當於先使用 cd 命令轉該目錄下再執行不帶 -C 參數的 jar 命令,它只能在建立和更新 JAR 檔案包的時候可用。  以下通過一些例子來解釋主要、常用的jar命令的使用方法: 例3-1:jar cf test.jar bao該命令沒有列印壓縮的執行過程,執行結果是在目前的目錄產生了 test.jar 檔案。而且jar包裡包含META-INF檔案夾,而該檔案夾裡有MANIFEST.MF,這都是自動被建立的;而與META-INF檔案夾同級目錄下則包含了檔案夾bao。  例3-2 jar cvf test.jar bao該命令與上例中的結果相同,但是由於 v 參數的作用,顯示出了打包過程。  例3-3 jar cvfM test.jar bao該命令與例3-2結果類似,但在產生的 test.jar 中沒有包含 META-INF/MANIFEST 檔案,也有列印出壓縮的執行過程。  例3-4 jar cvfm test.jar manifest.mf bao運行結果與例3-2相似,列印資訊也相同,只是產生 JAR 包中的 META-INF/MANIFEST 內容不同,是包含了 manifest.mf 的內容  例3-5 jar tf test.jar在 test.jar 已經存在的情況下,可以查看 test.jar 中的內容,結果如下:META-INF/META-INF/MANIFEST.MFbao/X.class  例3-6 jar tvf test.jar除顯示中例3-5顯示的內容外,還包括包內檔案的詳細資料,如:0 Fri May 19 15:39:06 GMT 2010 META-INF/ 86 Fri May 19 15:39:06 GMT 2010 META-INF/MANIFEST.MF 0 Fri May 19 15:39:06 GMT 2010 bao/ 7 Fri May 19 15:39:06 GMT 2010 bao/X.class  例3-7 jar xf test.jar解壓test.jar 到目前的目錄,不列印任何資訊。  例3-8 jar xvf test.jar解壓test.jar 到目前的目錄,列印解壓過程的詳細資料。  例3-9 jar uf test.jar Y.class在 test.jar 中添加了檔案Y.class  例3-10 jar uvf test.jar Y.class與例3-9結果相同,同時有詳細資料顯示。 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.