編寫完java工程后,編譯出了xxx.class,xxxx.class,運行限制很多
比如從其他文件用路徑定位到.class的調用就會有找不到class的錯誤,所以如果要發布執行最好還是打成jar包
相應步驟如下:
1、把你的程序所涉及的.class都拷貝到一個目錄下,例:
output/
output/A.class
output/B.class
2、在這個目錄下創建一個manifest文檔,來指明這個jar包中誰是main函數以及一些其他信息,例:
新建文檔manifest.mf,存放位置:
output/manifest.mf
文檔內容:
Manifest-Version: 1.0
Main-Class: A
Created-By: wpl
請注意:
冒號后面要有空格
最后一行要為空,否則可能會有問題
3、打開命令行執行
jar cvfm test.jar manifest.mf A.class B.class
這里面cvfm是jar命令的參數,后面會提到
test.jar是你希望輸出的jar包的名字
mainfest.mf是剛才寫的配置文檔
然后是你的類文件
如果你的類文件過多,也可以用目錄代替(不過這樣會把mainfest.mf也大包進去,不過對運行沒影響啦),如下:
jar cvfm test.jar manifest.mf ./
你也可以使用通配符,把制定的文件打包,比如*.class表示所有class文件(不過如果你有class在文件夾中,這個方法就夠不到了~所以還是用目錄好)
4、測試生成的jar包是否運行正確
在命令行中執行jar包(如果你的main函數有參數,也別忘了加上參數)
java -jar test.jar
jar打包結束!
最后說一下cvfm參數的意義,在命令行中輸入jar即可看到:
jar 用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 選項包括: -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/。