將 Java 專案打包為可執行 JAR 是部署的基本技能。本文涵蓋命令行 jar 指令與 Eclipse 圖形化導出,並說明如何處理外部依賴庫。
jar {ctxui}[vfm0Mi] [jar-file] [manifest-file] [-C dir] files...
| 選項 | 說明 |
|---|---|
| -c | 建立新封存檔 |
| -t | 列出封存內容 |
| -x | 解壓縮檔案 |
| -u | 更新現有封存檔 |
| -v | 產生詳細輸出 |
| -f | 指定封存檔名稱 |
| -m | 包含指定 Manifest 資訊 |
| -0 | 僅儲存,不壓縮 |
| -M | 不建立 Manifest 檔案 |
# 將 Foo.class, Bar.class 打包成 classes.jar
jar cvf classes.jar Foo.class Bar.class
# 使用現有 manifest,將 foo/ 目錄下所有檔案打包
jar cvfm classes.jar mymanifest -C foo/ .
java -jar test.jar
# 將輸出導向 log.txt
java -jar test.jar > log.txt
/MyProject/MANIFEST.MF)MANIFEST.MF:Manifest-Version: 1.0
Main-Class: com.example.Main
Class-Path: lib/jxl.jar lib/other.jar
Class-Path 中的 JAR 與輸出 JAR 放在同一目錄現代專案建議使用建構工具自動打包:
mvn package(配合 maven-shade-plugin 或 maven-assembly-plugin 產生 Fat JAR)./gradlew shadowJar(需 com.github.jengelman.gradle.plugins.shadow 外掛)Class-Path 路徑以空格分隔,相對路徑基於 JAR 所在目錄。--add-modules。