META-INF/MANIFEST.MF 為核心清單文件| 參數 | 作用 | 必須搭配 |
|---|---|---|
-c | 創建新 JAR | -f |
-t | 列出 JAR 內容 | -f |
-x | 解壓 JAR | -f |
-f | 指定 JAR 文件名 | 所有操作 |
-v | 顯示詳細信息(大小、時間、壓縮比) | 任意 |
-m | 指定自定義清單文件 | -c -f |
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");
}
}
javac -d . U.java
# 生成 love/com/cn/U.class 等
jar cvf hello.jar *.class
# 或包含源碼:jar cvf hello.jar *.class *.java
jar tf hello.jar
# 輸出:
# META-INF/
# META-INF/MANIFEST.MF
# love/com/cn/A.class
# love/com/cn/U.class
# ...
jar xf hello.jar
# 當前目錄還原所有文件
jar tvf hello.jar
# 顯示權限、大小、修改時間、壓縮比
Main-Class: love.com.cn.U
# 注意:
# 1. 冒號後必須有一個空格
# 2. 文件必須以空行結尾(關鍵!否則不生效)
jar cvfm hello.jar manifest.mf love/com/cn/*.class
jar xf hello.jar META-INF/MANIFEST.MF
cat META-INF/MANIFEST.MF
# 應包含:
# Main-Class: love.com.cn.U
java -jar hello.jar
# 輸出:Hello java.jar
# 雙擊運行(Windows 需關聯 javaw.exe)
# 或創建 run.bat:
# javaw -jar hello.jar
@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)javaw -jar 或修改文件關聯jar cvf app.jar *.class config/ images/jar 是 Java 開發者的瑞士軍刀。掌握 c/t/x/f/v/m 六大參數組合,配合清單文件聲明主類,即可構建專業級可分發 JAR。建議將打包流程納入構建腳本(Ant/Maven/Gradle),實現一鍵構建發布包。