天天看點

Java:打包成jar包

準備Java檔案 Hello.java

public class Hello{
   public static void main(String[] args) {
       System.out.println("Hello");
   }
}      

打包過程

$ javac Hello.java                # 編譯成.class 檔案

$ jar -cvf hello.jar Hello.class  # 打包
已添加清單
正在添加: Hello.class(輸入 = 401) (輸出 = 275)(壓縮了 31%)

$ jar -xvf hello.jar              # 解壓
  已建立: META-INF/
  已解壓: META-INF/MANIFEST.MF
  已解壓: Hello.class      

記事本打開檔案 META-INF/MANIFEST.MF, 添加

Main-Class: Hello

Manifest-Version: 1.0
Created-By: 1.8.0_172 (Oracle Corporation)
Main-Class: Hello
      

再次打包

$ jar -cvfm hello.jar META-INF/MANIFEST.MF Hello.class
已添加清單
正在添加: Hello.class(輸入 = 401) (輸出 = 275)(壓縮了 31%)

# jar -cvfm hello.jar META-INF/MANIFEST.MF -C demo/ .
# 打包demo檔案夾下所有檔案,注意後面的'.'

$ java -jar hello.jar # 執行jar包
Hello      

打包參數

-c  建立一個jar包
-t  顯示jar中的内容清單
-x  解壓jar包
-u  添加檔案到jar包中
-f  指定jar包的檔案名
-v  輸出詳細報告
-m  指定MANIFEST.MF檔案
-0  生成jar包時不壓縮内容
-M  不生成清單檔案MANIFEST.MF
-i  為指定的jar檔案建立索引檔案
-C  可在相應的目錄下執行指令      

參考

java打jar包的幾種方式詳解 Java Jar包壓縮、解壓使用指南