JAR (Java ARchive) 格式與 ZIP 完全相容,差異在於強制包含 `META-INF/MANIFEST.MF` 清單檔。這使得 JAR 既是壓縮包,也是 Java 模組化部署單元。
建立 `manifest.mf` (任意名稱、任意位置),關鍵內容:
Main-Class: com.example.MainClass
⚠️ 必須以換行符結尾,類名需含完整套件路徑。
project-root/
├── manifest.mf
└── com/
└── example/
└── MainClass.class
# 在 project-root 目錄下執行
jar cvfm MyApp.jar manifest.mf com
# 雙擊執行 (Windows 已關聯 javaw) 或命令列
java -jar MyApp.jar
| 操作命令 (擇一) | 說明 |
|---|---|
c | 建立新 JAR |
t | 列出內容清單 |
x | 解壓檔案 |
u | 更新現有 JAR (新增/覆蓋) |
| 選項參數 | 說明 |
|---|---|
v | 詳細輸出 |
f | 指定 JAR 檔名 (幾乎必用) |
m | 指定 Manifest 檔 |
0 | 僅儲存不壓縮 (速度快、體積大) |
M | 不產生預設 Manifest (忽略 -m) |
-C dir | 切換到指定目錄執行 (僅 c/u 有效) |
# 1. 簡單打包目錄 (含預設 Manifest)
jar cf app.jar com
# 2. 可見過程打包
jar cvf app.jar com
# 3. 不產生 Manifest (純 ZIP)
jar cvfM app.zip com
# 4. 自訂 Manifest 打包可執行 JAR
jar cvfm app.jar manifest.mf com
# 5. 查看內容
jar tf app.jar
jar tvf app.jar # 含大小、時間
# 6. 解壓到當前目錄
jar xf app.jar
jar xvf app.jar # 顯示過程
# 7. 更新/新增檔案
jar uf app.jar new.properties
jar uvf app.jar new.properties
# 8. 指定工作目錄打包 (避免包含上層路徑)
jar cvf app.jar -C build/classes com
JAR = ZIP,可用 WinRAR、7-Zip、`unzip -d target_dir app.jar` 解壓,支援指定輸出目錄 (jar `-C` 僅支援建立/更新)。
jar cvfM dist.zip src # 不含 Manifest,純 ZIP