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

Jar 打包命令完整參數詳解與實戰用法

     編輯:Java 相關知識

命令語法總覽

jar {ctxui}[vf0Mme] [jar-file] [manifest-file] [entry-point] [-C dir] files...

操作模式(互斥,必選一)

選項功能
c創建新的 JAR 文件
u更新現有 JAR 文件
x解壓 JAR 文件
t列出 JAR 文件目錄
i為 JAR 文件生成索引信息

常用修飾選項

選項說明
v輸出詳細過程(verbose)
f指定 JAR 文件名(需緊跟文件名),缺省讀寫 stdout/stdin
0僅存儲,不壓縮(store only)
M不生成默認 Manifest 文件
m引入自定義 Manifest 文件(需緊跟 manifest 文件名)
e指定應用程序入口類(需緊跟全限定類名),自動寫入 Manifest 的 Main-Class
-C dir切換到指定目錄執行後續文件操作(可多次使用)
-J傳遞 JVM 參數(如 -J-Xmx512m),無空格

參數位置關係

  • jar-file、manifest-file、entry-point 的順序必須與 f、m、e 選項出現的順序一致。
  • 若同時使用 m 和 e,且 Manifest 中已有 Main-Class,打包會失敗。

實戰示例

1. 創建可執行 JAR(帶入口類)

jar -cvfe app.jar com.example.Main -C build/classes .

等效於:創建 app.jar,入口類 com.example.Main,從 build/classes 目錄遞歸打包所有文件。

2. 使用自定義 Manifest

jar -cvfm app.jar manifest.txt -C build/classes .

manifest.txt 內容:

Main-Class: com.example.Main
Class-Path: lib/dependency.jar

3. 解壓並查看

jar -xvf app.jar          # 解壓到當前目錄
jar -tvf app.jar          # 僅列出目錄,不解壓

4. 更新 JAR 中的單個文件

jar -uvf app.jar com/example/UpdatedClass.class

5. 生成索引(加速類加載)

jar -i app.jar

會在 META-INF/INDEX.LIST 記錄包結構,類加載器可快速定位。

注意事項

  • 文件路徑分隔符統一用 /(跨平台)。
  • 通配符 * 由 Shell 展開,非 jar 內部功能;建議用 -C dir . 遞歸打包整目錄。
  • 大文件建議加 0 選項避免壓縮耗時,或使用 zip/gzip 獨立壓縮。

Maven/Gradle 集成提示

實際專案極少手動敲 jar 命令,均通過構建工具插件配置:

  • Maven: maven-jar-plugin + maven-shade-plugin(Fat JAR)
  • Gradle: jar { manifest { attributes 'Main-Class': '...' } }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved