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

Java jar 命令完全指南:從打包到可執行 JAR 的實戰圖解

     編輯:Java 相關知識

JAR 文件核心價值

  • 基於 ZIP/ZLIB 壓縮,聚合類文件、資源、元數據
  • 加速 Applet/應用下載(單文件傳輸)
  • 增強安全性:完整性校驗、數字簽名、主類聲明
  • META-INF/MANIFEST.MF 為核心清單文件

常用參數速查表

參數作用必須搭配
-c創建新 JAR-f
-t列出 JAR 內容-f
-x解壓 JAR-f
-f指定 JAR 文件名所有操作
-v顯示詳細信息(大小、時間、壓縮比)任意
-m指定自定義清單文件-c -f

實戰演練:從源碼到可執行 JAR

1. 準備源碼

package love.com.cn;
class A {} class B {} class C {} class D {}
public class U {
    public static void main(String[] args) {
        System.out.println("Hello java.jar");
    }
}

2. 編譯生成類文件

javac -d . U.java
# 生成 love/com/cn/U.class 等

3. 創建基礎 JAR(無主類)

jar cvf hello.jar *.class
# 或包含源碼:jar cvf hello.jar *.class *.java

4. 查看 JAR 內容

jar tf hello.jar
# 輸出:
# META-INF/
# META-INF/MANIFEST.MF
# love/com/cn/A.class
# love/com/cn/U.class
# ...

5. 解壓 JAR

jar xf hello.jar
# 當前目錄還原所有文件

6. 詳細信息模式

jar tvf hello.jar
# 顯示權限、大小、修改時間、壓縮比

關鍵進階:生成可雙擊運行的 JAR

步驟 1:編寫清單文件 manifest.mf

Main-Class: love.com.cn.U
# 注意:
# 1. 冒號後必須有一個空格
# 2. 文件必須以空行結尾(關鍵!否則不生效)

步驟 2:打包並指定清單

jar cvfm hello.jar manifest.mf love/com/cn/*.class

步驟 3:驗證清單生效

jar xf hello.jar META-INF/MANIFEST.MF
cat META-INF/MANIFEST.MF
# 應包含:
# Main-Class: love.com.cn.U

步驟 4:運行測試

java -jar hello.jar
# 輸出:Hello java.jar

# 雙擊運行(Windows 需關聯 javaw.exe)
# 或創建 run.bat:
# javaw -jar hello.jar

批處理腳本自動化(build.bat)

@echo off
javac -d . *.java
echo Main-Class: love.com.cn.U > manifest.mf
echo. >> manifest.mf
jar cvfm app.jar manifest.mf love/com/cn/*.class
del manifest.mf
echo Build success! Run: java -jar app.jar
pause

常見坑點避雷

  • 清單文件無空行結尾 → Main-Class 不生效
  • 包結構錯誤 → Main-Class 必須與目錄結構一致(love.com.cn.U 對應 love/com/cn/U.class)
  • WinRAR 搶占 .jar 關聯 → 雙擊變解壓,須用 javaw -jar 或修改文件關聯
  • 資源文件未包含 → 需顯式加入 jar cvf app.jar *.class config/ images/

總結

jar 是 Java 開發者的瑞士軍刀。掌握 c/t/x/f/v/m 六大參數組合,配合清單文件聲明主類,即可構建專業級可分發 JAR。建議將打包流程納入構建腳本(Ant/Maven/Gradle),實現一鍵構建發布包。

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