解壓和打包Jar

 

簡介

1. 壓縮包java

jar cvf filename.jar a.class b.class: 壓縮指定文件;app

jar cvf weibosdkcore.jar *: 所有壓縮;ui

 

2. 解壓包spa

jar xvf test.jar.net

 

詳解

jar命令生成、查看、更新、解開jar包的做用,包含META-INF/MANIFEST.MF文件。code

它是jar包生成的時候,自動建立的,主要負責指定jar包的main文件位置當前文件夾blog

jar命令的參數詳解:遞歸

[plain] view plain copy索引

 print?在CODE上查看代碼片派生到個人代碼片ip

  1. C:\>jar cf lm.jar  

'c' 標誌要求指定清單或輸入文件!

用法: 

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

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

選項包括:

    -c  建立新的歸檔文件

    -t  列出歸檔目錄

    -x  解壓縮已歸檔的指定(或全部)文件

    -u  更新現有的歸檔文件

    -v  在標準輸出中生成詳細輸出

    -f  指定歸檔文件名

    -m  包含指定清單文件中的清單信息

    -e  爲捆綁到可執行 jar 文件的獨立應用程序

        指定應用程序入口點

    -0  僅存儲;不使用任何 ZIP 壓縮

    -M  不建立條目的清單文件

    -i  爲指定的 jar 文件生成索引信息

    -C  更改成指定的目錄幷包含其中的文件

若是有任何目錄文件,則對其進行遞歸處理。

清單文件名、歸檔文件名和入口點名的指定順序與 "m"、"f" 和 "e" 標誌的指定順序相同。

 

示例 1

將兩個類文件歸檔到一個名爲 classes.jar 的歸檔文件中:

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. jar cvf classes.jar Foo.class Bar.class  

 

示例 2

使用現有的清單文件 "mymanifest" 並將 foo/ 目錄中的全部文件歸檔到 "classes.jar" 中:

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. jar cvfm classes.jar mymanifest -C foo/ .  

 

示例 3

在c盤下建立了Executable Jar File類型的lm.jar包。

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\>jar cf lm.jar Lm.class Lm.java  

 

示例 4

添加v參數顯示打包詳細過程:

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar cvf lm.jar Lm.class  


標明清單(manifest):增長:Lm.class(讀入= 410) (寫出= 283)(壓縮了 30%)

其中c參數表示建立jar包,f參數是指定的jar包文件名。在使用jar命令的時候,要指定必須的參數:

 -c  建立新的歸檔文件

 -t  列出歸檔目錄

 -x  解壓縮已歸檔的指定(或全部)文件

 -u  更新現有的歸檔文件

 

示例 5

運行剛生成的jar包:

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\>java -jar lm.jar  

Failed to load Main-Class manifest attribute from lm.jar

根據英文錯誤提示,好像讀取lm.jar包的manifest屬性失敗。

 

示例 6

建立不包含META-INF/MANIFEST.MF文件的jar包

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar cvfM lm1.jar Lm.class  

增長:Lm.class(讀入= 410) (寫出= 283)(壓縮了 30%)

 

示例 7

顯示jar包中的文件

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar tf lm.jar  
  2. META-INF/  
  3. META-INF/MANIFEST.MF  
  4. Lm.class  

 

示例 8

因爲建立jar包的時候用了M參數,因此就沒有META-INF目錄和META-INF/MANIFEST.MF文件

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar tf lm1.jar  
  2. Lm.class  

 

示例 9

顯示jar包的文件和文件詳細信息

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar tvf lm.jar  
  2.      0 Mon Sep 26 23:09:34 CST 2011 META-INF/  
  3.     75 Mon Sep 26 23:09:34 CST 2011 META-INF/MANIFEST.MF  
  4.    410 Mon Sep 26 22:09:00 CST 2011 Lm.class  

這些詳細信息包括讀入的字節,jar包中讀入的時間,目錄或文件名

 

示例 10

解壓jar包到當前目錄中

[plain] view plain copy

 print?在CODE上查看代碼片派生到個人代碼片

  1. C:\jar>jar xf lm.jar  

不顯示任何信息,可是解壓成功