[Java]如何將編譯好的.class檔案打包成JAR?
要完成一個Java專案,勢必得分好幾個Class撰寫。但是當這個Java專案完成後,要如何拿給使用者執行呢?總不能讓使用者自己一個一個去試這堆Class中到底哪個是擁有程式進入點的Main Class吧?Java JDK提供了將.class打包為.jar的指令,只要安裝好JDK後就可以使用「jar」指令來將class檔案打包為以ZIP格式壓縮的JAR檔案,之後將這JAR檔案拿到任何裝有JRE的作業系統上,都可以使用「java -jar」指令來執行。
其實許多Java IDE工具都有提供建立JAR檔案的功能,但並不是每個人都使用相同的IDE,故在此只介紹使用官方JDK內建的「jar」指令來打包JAR的作法。
使用「jar」指令打包JAR檔案
單一Class檔案
步驟一 首先請將要進行打包的.class檔案獨立放置於某個空的資料夾下,作為接下來步驟的根目錄,這樣比較方便。
步驟二 開啟純文字編輯器,輸入以下內容:
Main-Class: 含有程式進入點(main方法)的Main Class名稱
注意要於下方再空兩行,否則執行JAR檔案的時候會出問題。
步驟三 將文件檔名儲存為「manifest.mf」,存放到.class檔案所在的根目錄。存成其他名稱也是可以的,只是不建議。
步驟四 開啟命令提示字元(CMD)。如果是Linux使用者就開啟終端機。
步驟五 先使用基本的指令將cmd的工作目錄更便到class檔案所在的根目錄下。這部分相信初學Java的人都會,因為有用過javac來編譯.java檔案。
步驟六 執行以下指令開始打包JAR檔案。
jar cvfm 自訂產生出來的jar檔名(含副檔名) manifest檔名 class名稱(如果大於一個可用空格隔開)
例如我輸入:
jar cvfm a008.jar manifest.mf a008.class
步驟七 執行後會出現檔案壓縮的詳細情形,表示打包成功。
步驟八 輸入以下指令執行JAR檔案看看。如果無法執行,請檢查manifest的Main-Class是否有正確選到擁有程式進入點的Class。
java -jar JAR檔名
例如我輸入:
java -jar a008.jar
多個Class檔案(含Package)
步驟一 首先請將要進行打包的Package資料夾整個放置於某個空的資料夾(作為JAR檔案的根目錄)下,這樣比較方便。
步驟二 開啟純文字編輯器,輸入以下內容:
Main-Class: 套件(Package)名稱/含有程式進入點(main方法)的Main Class名稱
注意要於下方再空兩行,否則執行JAR檔案的時候會出問題。
步驟三 開啟命令提示字元,並將工作目錄更變到JAR檔案的根目錄下,然後輸入以下指令:
jar cvfm 自訂產生出來的jar檔名(含副檔名) manifest檔名 套件資料夾名稱*.class(如果有多個套件可用空格隔開)
這裡要注意指令裡所包含的路徑。Windows中的路徑所使用目錄分隔符號為反斜線「」,Linux系統使用的符號則是斜線「/」。
步驟四 執行後會出現檔案壓縮的詳細情形,表示打包成功。
步驟五 執行.jar檔案看看。
更簡單執行JAR檔案的方法
如果想把自己打包好的JAR檔案丟給別人執行,可以在.jar檔的旁邊加入一個內容如下用來執行jar的Batch File(批次檔)。並命名為「start.bat」
java -jar *.jar
只要執行「start.bat」,便會直接開啟同一個目錄下的jar檔案,很方便。
有關於「jar」指令更詳細的方法可以直接在命令提示字元下輸入並執行「jar」指令來查看。如果也想知道manifest.mf更詳細的使用方法可以自行上網Google一下。