【零碎JAVA】使用jar命令創建可執行的jar文件

java中,jar包是我們經常見到的東西,他是一個壓縮文件。jar包跟zip格式的壓縮文件的壓縮機制是相同的,只不過jar包比zip文件多了一個清單文件(META-INF/MANIFEST.MF)。

-----------------------------------------------------------------------------------------------------------------------------------------

一般情況下jar包通常會以一下兩種形式存在:

        1.用於項目導入,單純的壓縮文件,裏面有很多的.java,.class文件,導入這樣的jar包後,我們可以在項目中使用該jar包裏提供的一些類,編譯運行時,jvm會自動解壓該jar,這使得他的跨平臺性很好。

        2.可執行的jar包,他與上者的主要區別在於,在清單文件(META-INF/MANIFEST.MF)中指定了主函數,告訴編譯器,加載這個jar包先加載哪個類。

           他主要在清單文件中添加了行Main-Class:<空格>主類名<回車>。

            需要注意的是,這個格式是非常嚴謹的,必須按照以上格式寫,區分大小寫。

 

------------------------------------------------------------------------------------------------------------------------------------------

下面看一下jar命令的相關信息,我們可以在控制檯輸入jar來查看(前提java環境變量已經配置好):

用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] file
s ...
選項包括:
    -c  創建新的歸檔文件
    -t  列出歸檔目錄
    -x  從檔案中提取指定的 (或所有) 文件
    -u  更新現有的歸檔文件
    -v  在標準輸出中生成詳細輸出
    -f  指定歸檔文件名
    -m  包含指定清單文件中的清單信息
    -e  爲捆綁到可執行 jar 文件的獨立應用程序
        指定應用程序入口點
    -0  僅存儲; 不使用情況任何 ZIP 壓縮
    -M  不創建條目的清單文件
    -i  爲指定的 jar 文件生成索引信息
    -C  更改爲指定的目錄幷包含其中的文件
如果有任何目錄文件, 則對其進行遞歸處理。
清單文件名, 歸檔文件名和入口點名稱的指定順序
與 'm', 'f' 和 'e' 標記的指定順序相同。

示例 1: 將兩個類文件歸檔到一個名爲 classes.jar 的歸檔文件中:
       jar cvf classes.jar Foo.class Bar.class
示例 2: 使用現有的清單文件 'mymanifest' 並
           將 foo/ 目錄中的所有文件歸檔到 'classes.jar' 中:
       jar cvfm classes.jar mymanifest -C foo/。

 


------------------------------------------------------------------------------------------------------------------------------------------

以上我們可以看到他的命令格式,以及兩個簡單的例子。
按照上面的介紹,我們可以進行打包可執行jar包了。
        1.創建一個文檔(此處爲a.txt),按照Main-Class:<空格>主類名<回車>的格式,指定主類。
        2.執行命令 jar cvfm [希望生成的jar包名] [指定主類的文檔] [希望打包的文件夾]  如:jar cvfm test.jar a.txt com  執行完該命令,我們會發現清單文件中多了一行Main-Class: [包名].[主類名]
        3.通過jar -jar test.jar去執行該jar包。


------------------------------------------------------------------------------------------------------------------------------------------

大功告成! 

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