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

JAR 文件全解析:從結構到可執行 JAR 創建最佳實踐

     編輯:Java 相關知識

JAR 文件本質

JAR(Java Archive)本質是 ZIP 格式壓縮包,唯一區別在於包含 META-INF/MANIFEST.MF 清單文件。對比:

test.zip          test.jar
└─ test/          ├─ META-INF/
   └─ Test.class      └─ MANIFEST.MF
                     └─ test/
                        └─ Test.class

可執行 JAR 創建三步驟

1. 編寫 Manifest 清單文件

創建 manifest.mf(任意位置),關鍵行:

Main-Class: com.example.MainClass
  • 類名需包含完整包路徑。
  • 該行必須以換行符結尾,否則解析失敗。
  • 可添加 Class-Path: lib/dep1.jar lib/dep2.jar 聲明依賴(相對 JAR 路徑)。

2. 目錄結構準備

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

3. 執行 jar 命令打包

jar cvfm MyApp.jar manifest.mf com
  • c 創建,v 顯示過程,f 指定輸出文件,m 引入自定義 Manifest。
  • 最後一個參數 com 為打包的根目錄(包含包結構)。

運行與驗證

java -jar MyApp.jar

雙擊運行需系統關聯 .jar 到 javaw.exe(Windows JRE 安裝默認已配置)。

常見坑點與解決

進階:Maven Shade / Assembly 插件

生產項目建議使用 Maven 插件自動化:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <configuration>
    <transformers>
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
        <mainClass>com.example.MainClass</mainClass>
      </transformer>
    </transformers>
  </configuration>
</plugin>

優勢:自動合併依賴、處理簽名衝突、生成 Fat JAR(含所有依賴),無需手動管理 Class-Path。

總結

  • JAR = ZIP + MANIFEST.MF。
  • 可執行 JAR 核心在 Main-Class 屬性。
  • 手動打包適合簡單項目;企業級項目請使用 Maven/Gradle 插件自動化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
問題原因解決
NoClassDefFoundErrorClass-Path 路徑錯誤或依賴 JAR 缺失檢查相對路徑,確保依賴 JAR 與主 JAR 同級目錄
無主清單屬性Manifest 缺少 Main-Class 或換行符缺失重新編寫 manifest.mf,確保末尾換行
類找不到打包時未包含完整包目錄結構在包根目錄父級執行 jar 命令,參數為包根目錄名