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

JAR 打包全攻略:從編譯到可執行 JAR 的完整流程

     編輯:Java 相關知識

範例類別結構


// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("MainClass work well");
        SubClass mycls = new SubClass();
    }
}
class SubClass {
    public SubClass() { System.out.println("SubClass work well"); }
}

標準打包步驟

  1. 編譯:javac HelloWorld.java → 產生 HelloWorld.class、SubClass.class。
  2. 測試:java HelloWorld 確認無誤。
  3. 整理目錄:僅保留 .class 檔案,刪除 .java 源碼。
  4. 建立 META-INF 目錄:mkdir META-INF。
  5. 建立 Manifest 清單檔:在專案根目錄建立 MANIFEST.MF,內容:
    Main-Class: HelloWorld
    (注意:冒號後有空格,檔案結尾需換行)。
  6. 打包命令:
    jar cvfm MyApp.jar MANIFEST.MF *
    • c 建立新檔、v 顯示過程、f 指定輸出檔、m 引入清單檔。
    • * 包含當前目錄所有檔案(含 META-INF/)。
  7. 執行驗證:
    java -jar MyApp.jar
    # 輸出:
    # MainClass work well
    # SubClass work well
    

關鍵細節解析

環節關鍵點
Main-Class指定入口類全限定名(無 .class 後綴),JVM 啟動時調用其 main()。
Manifest 位置打包時自動置於 META-INF/MANIFEST.MF;也可用 jar ufm 更新現有 JAR 的清單。
Class-Path 屬性Manifest 中可聲明 Class-Path: lib/dependency.jar 引入外部依賴(相對路徑)。
多主類別單一 JAR 僅能指定一個 Main-Class;多入口需多 JAR 或自定義啟動器。

進階:Maven/Gradle 自動化




    org.apache.maven.plugins
    maven-jar-plugin
    
        
            
                com.example.HelloWorld
            
        
    

現代專案強烈建議使用建構工具管理打包,避免手動操作失誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved