首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JAR 檔案完整指南:從可執行打包到命令參數深度解析

     編輯:Java 相關知識

JAR 本質:帶清單的 ZIP 檔案

JAR (Java ARchive) 格式與 ZIP 完全相容,差異在於強制包含 `META-INF/MANIFEST.MF` 清單檔。這使得 JAR 既是壓縮包,也是 Java 模組化部署單元。

建立可執行 JAR 三步驟

1. 準備 Manifest 檔案

建立 `manifest.mf` (任意名稱、任意位置),關鍵內容:

Main-Class: com.example.MainClass

⚠️ 必須以換行符結尾,類名需含完整套件路徑。

2. 目錄結構對齊套件結構

project-root/
├── manifest.mf
└── com/
    └── example/
        └── MainClass.class

3. 執行打包命令

# 在 project-root 目錄下執行
jar cvfm MyApp.jar manifest.mf com
  • `c` 建立新檔、`v` 顯示過程、`f` 指定輸出檔、`m` 匯入自訂 Manifest
  • 輸出 `MyApp.jar` 內含 `META-INF/MANIFEST.MF` 已合併 `Main-Class` 屬性

執行與驗證

# 雙擊執行 (Windows 已關聯 javaw) 或命令列
java -jar MyApp.jar

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

進階技巧

1. 使用系統解壓工具

JAR = ZIP,可用 WinRAR、7-Zip、`unzip -d target_dir app.jar` 解壓,支援指定輸出目錄 (jar `-C` 僅支援建立/更新)。

2. 圖形化工具建立 JAR

  • WinRAR/7-Zip 建立 ZIP → 新增 `META-INF/MANIFEST.MF` → 改副檔名 `.jar`
  • IntelliJ IDEA: `File → Project Structure → Artifacts → JAR → From modules with dependencies`

3. jar 命令建立純 ZIP

jar cvfM dist.zip src  # 不含 Manifest,純 ZIP

常見坑點提醒

  • `Main-Class` 指定的類必須有 `public static void main(String[])`
  • 打包前確認 `java com.example.MainClass` 能正常運行 (CLASSPATH 正確)
  • 依賴第三方 JAR 時,需用 `Class-Path` 屬性或打成 Fat JAR (Maven Shade/Assembly Plugin)
  • Manifest 屬性名冒號後需有一個空格,行尾必須換行
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved