注銷

          注銷

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            112 隨筆 :: 7 文章 :: 18 評(píng)論 :: 0 Trackbacks
          jar  命令詳解  
           
          jar  是隨  JDK  安裝的,在  JDK  安裝目錄下的  bin  目錄中,Windows  下文件名為  jar.exe,Linux  下文件名為  jar。它的運(yùn)行需要用到  JDK  安裝目錄下  lib  目錄中的  tools.jar  文件。不過我們除了安裝  JDK  什么也不需要做,因?yàn)? SUN  已經(jīng)幫我們做好了。我們甚至不需要將  tools.jar  放到  CLASSPATH  中。  
           
          使用不帶任何的  jar  命令我們可以看到  jar  命令的用法如下:  
           
          jar  {ctxu}[vfm0M]  [jar-文件]  [manifest-文件]  [-C  目錄]  文件名  ...  
           
          其中  {ctxu}  是  jar  命令的子命令,每次  jar  命令只能包含  ctxu  中的一個(gè),它們分別表示:  
           
          -c 創(chuàng)建新的  JAR  文件包  
           
          -t 列出  JAR  文件包的內(nèi)容列表  
           
          -x 展開  JAR  文件包的指定文件或者所有文件  
           
          -u 更新已存在的  JAR  文件包  (添加文件到  JAR  文件包中)  
           
          [vfm0M]  中的選項(xiàng)可以任選,也可以不選,它們是  jar  命令的選項(xiàng)參數(shù)  
           
          -v 生成詳細(xì)報(bào)告并打印到標(biāo)準(zhǔn)輸出  
           
          -f 指定  JAR  文件名,通常這個(gè)參數(shù)是必須的  
           
          -m 指定需要包含的  MANIFEST  清單文件  
           
          -0 只存儲(chǔ),不壓縮,這樣產(chǎn)生的  JAR  文件包會(huì)比不用該參數(shù)產(chǎn)生的體積大,但速度更快  
           
          -M 不產(chǎn)生所有項(xiàng)的清單(MANIFEST〕文件,此參數(shù)會(huì)忽略  -m  參數(shù)  
           
          [jar-文件]  即需要生成、查看、更新或者解開的  JAR  文件包,它是  -f  參數(shù)的附屬參數(shù)  
           
          [manifest-文件]  即  MANIFEST  清單文件,它是  -m  參數(shù)的附屬參數(shù)  
           
          [-C  目錄]  表示轉(zhuǎn)到指定目錄下去執(zhí)行這個(gè)  jar  命令的操作。它相當(dāng)于先使用  cd  命令轉(zhuǎn)該目錄下再執(zhí)行不帶  -C  參數(shù)的  jar  命令,它只能在創(chuàng)建和更新  JAR  文件包的時(shí)候可用。    
           
          文件名  ...  指定一個(gè)文件/目錄列表,這些文件/目錄就是要添加到  JAR  文件包中的文件/目錄。如果指定了目錄,那么  jar  命令打包的時(shí)候會(huì)自動(dòng)把該目錄中的所有文件和子目錄打入包中。  
           
          下面舉一些例子來說明  jar  命令的用法:  
           
          1)  jar  cf  test.jar  test  
           
          該命令沒有執(zhí)行過程的顯示,執(zhí)行結(jié)果是在當(dāng)前目錄生成了  test.jar  文件。如果當(dāng)前目錄已經(jīng)存在  test.jar,那么該文件將被覆蓋。  
           
          2)  jar  cvf  test.jar  test  
           
          該命令與上例中的結(jié)果相同,但是由于  v  參數(shù)的作用,顯示出了打包過程,如下:  
           
          標(biāo)明清單(manifest)  
           
          增加:test/(讀入=  0)  (寫出=  0)(存儲(chǔ)了  0%)  
           
          增加:test/Test.class(讀入=  7)  (寫出=  6)(壓縮了  14%)  
           
          3)  jar  cvfM  test.jar  test  
           
          該命令與  2)  結(jié)果類似,但在生成的  test.jar  中沒有包含  META-INF/MANIFEST  文件,打包過程的信息也略有差別:  
           
          增加:test/(讀入=  0)  (寫出=  0)(存儲(chǔ)了  0%)  
           
          增加:test/Test.class(讀入=  7)  (寫出=  6)(壓縮了  14%)  
           
          4)  jar  cvfm  test.jar  manifest.mf  test  
           
          運(yùn)行結(jié)果與  2)  相似,顯示信息也相同,只是生成  JAR  包中的  META-INF/MANIFEST  內(nèi)容不同,是包含了  manifest.mf  的內(nèi)容  
           
          5)  jar  tf  test.jar  
           
          在  test.jar  已經(jīng)存在的情況下,可以查看  test.jar  中的內(nèi)容,如對(duì)于  2)  和  3)  生成的  test.jar  分別應(yīng)該此命令,結(jié)果如下;  
           
          對(duì)于  2)  
           
          META-INF/  
           
          META-INF/MANIFEST.MF  
           
          test/  
           
          test/Test.class  
           
          對(duì)于  3)  
           
          test/  
           
          test/Test.class  
           
          6)  jar  tvf  test.jar  
           
          除顯示  5)  中顯示的內(nèi)容外,還包括包內(nèi)文件的詳細(xì)信息,如:  
           
          0  Wed  Jun  19  15:39:06  GMT  2002  META-INF/  
           
          86  Wed  Jun  19  15:39:06  GMT  2002  META-INF/MANIFEST.MF  
           
          0  Wed  Jun  19  15:33:04  GMT  2002  test/  
           
          7  Wed  Jun  19  15:33:04  GMT  2002  test/Test.class  
           
          7)  jar  xf  test.jar  
           
          解開  test.jar  到當(dāng)前目錄,不顯示任何信息,對(duì)于  2)  生成的  test.jar,解開后的目錄結(jié)構(gòu)如下:  
           
            ==  
           
              ¦--  META-INF  
           
              ¦   `--  MANIFEST  
           
            `--  test  
           
              `--Test.class  
           
          8)  jar  xvf  test.jar  
           
          運(yùn)行結(jié)果與  7)  相同,對(duì)于解壓過程有詳細(xì)信息顯示,如:  
           
          創(chuàng)建:META-INF/  
           
          展開:META-INF/MANIFEST.MF  
           
          創(chuàng)建:test/  
           
          展開:test/Test.class  
           
          9)  jar  uf  test.jar  manifest.mf  
           
          在  test.jar  中添加了文件  manifest.mf,此使用  jar  tf  來查看  test.jar  可以發(fā)現(xiàn)  test.jar  中比原來多了一個(gè)  manifest。這里順便提一下,如果使用  -m  參數(shù)并指定  manifest.mf  文件,那么  manifest.mf  是作為清單文件  MANIFEST  來使用的,它的內(nèi)容會(huì)被添加到  MANIFEST  中;但是,如果作為一般文件添加到  JAR  文件包中,它跟一般文件無異。  
           
          10)  jar  uvf  test.jar  manifest.mf  
           
          與  9)  結(jié)果相同,同時(shí)有詳細(xì)信息顯示,如:  
           
          增加:manifest.mf(讀入=  17)  (寫出=  19)(壓縮了  -11%)  
           
          4.  關(guān)于  JAR  文件包的一些技巧  
           
          1)  使用  unzip  來解壓  JAR  文件  
           
          在介紹  JAR  文件的時(shí)候就已經(jīng)說過了,JAR  文件實(shí)際上就是  ZIP  文件,所以可以使用常見的一些解壓  ZIP  文件的工具來解壓  JAR  文件,如  Windows  下的  WinZip、WinRAR  等和  Linux  下的  unzip  等。使用  WinZip  和  WinRAR  等來解壓是因?yàn)樗鼈兘鈮罕容^直觀,方便。而使用  unzip,則是因?yàn)樗鈮簳r(shí)可以使用  -d  參數(shù)指定目標(biāo)目錄。  
           
          在解壓一個(gè)  JAR  文件的時(shí)候是不能使用  jar  的  -C  參數(shù)來指定解壓的目標(biāo)的,因?yàn)? -C  參數(shù)只在創(chuàng)建或者更新包的時(shí)候可用。那么需要將文件解壓到某個(gè)指定目錄下的時(shí)候就需要先將這具  JAR  文件拷貝到目標(biāo)目錄下,再進(jìn)行解壓,比較麻煩。如果使用  unzip,就不需要這么麻煩了,只需要指定一個(gè)  -d  參數(shù)即可。如:  
           
          unzip  test.jar  -d  dest/  
           
          2)  使用  WinZip  或者  WinRAR  等工具創(chuàng)建  JAR  文件  
           
          上面提到  JAR  文件就是包含了  META-INF/MANIFEST  的  ZIP  文件,所以,只需要使用  WinZip、WinRAR  等工具創(chuàng)建所需要  ZIP  壓縮包,再往這個(gè)  ZIP  壓縮包中添加一個(gè)包含  MANIFEST  文件的  META-INF  目錄即可。對(duì)于使用  jar  命令的  -m  參數(shù)指定清單文件的情況,只需要將這個(gè)  MANIFEST  按需要修改即可。  
           
          3)  使用  jar  命令創(chuàng)建  ZIP  文件  
           
          有些  Linux  下提供了  unzip  命令,但沒有  zip  命令,所以需要可以對(duì)  ZIP  文件進(jìn)行解壓,即不能創(chuàng)建  ZIP  文件。如要?jiǎng)?chuàng)建一個(gè)  ZIP  文件,使用帶  -M  參數(shù)的  jar  命令即可,因?yàn)? -M  參數(shù)表示制作  JAR  包的時(shí)候不添加  MANIFEST  清單,那么只需要在指定目標(biāo)  JAR  文件的地方將  .jar  擴(kuò)展名改為  .zip  擴(kuò)展名,創(chuàng)建的就是一個(gè)不折不扣的  ZIP  文件了,如將上一節(jié)的第  3)  個(gè)例子略作改動(dòng):  
           
          ---------------------------------------------------------------  
           
          如果只想看一下有什么東東,用winrar也可以看。  
          用法:jar  {ctxu}[vfm0M]  [jar-文件]  [manifest-文件]  [-C  目錄]  文件名  ...  
          選項(xiàng):  
                 -c    創(chuàng)建新的存檔  
                 -t    列出存檔內(nèi)容的列表  
                 -x    展開存檔中的命名的(或所有的〕文件  
                 -u    更新已存在的存檔  
                 -v    生成詳細(xì)輸出到標(biāo)準(zhǔn)輸出上  
                 -f    指定存檔文件名  
                 -m    包含來自標(biāo)明文件的標(biāo)明信息  
                 -0    只存儲(chǔ)方式;未用ZIP壓縮格式  
                 -M    不產(chǎn)生所有項(xiàng)的清單(manifest〕文件  
                 -i    為指定的jar文件產(chǎn)生索引信息  
                 -C    改變到指定的目錄,并且包含下列文件:  
          如果一個(gè)文件名是一個(gè)目錄,它將被遞歸處理。  
          清單(manifest〕文件名和存檔文件名都需要被指定,按'm'  和  'f'標(biāo)志指定的相同順序。  
           
          示例1:將兩個(gè)class文件存檔到一個(gè)名為  'classes.jar'  的存檔文件中:  
                       jar  cvf  classes.jar  Foo.class  Bar.class  
          示例2:用一個(gè)存在的清單(manifest)文件  'mymanifest'  將  foo/  目錄下的所有  
                               文件存檔到一個(gè)名為  'classes.jar'  的存檔文件中:  
                       jar  cvfm  classes.jar  mymanifest  -C  foo/  .  
           
          ---------------------------------------------------------------  
           
          jar  cvf  flight.jar  aa\aa1  aa\aa2  
           
          文件名后面是你要壓縮的文件所在的目錄,可以跟多個(gè)  
          ---------------------------------------------------------------  
           
          jar  cvf  class.jar  GreetingServlet.class  22.class  33.class  
          創(chuàng)建jar包  
          如果你要查看tools.jar中的內(nèi)容,用解壓縮軟件(比如rar)解開就可以看了
          posted on 2007-07-05 11:49 注銷..... 閱讀(347) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 长泰县| 丽水市| 右玉县| 南开区| 深水埗区| 启东市| 自贡市| 高要市| 株洲县| 麻江县| 尼木县| 三门峡市| 铜鼓县| 淮安市| 华阴市| 惠东县| 固原市| 泰安市| 安国市| 荔浦县| 深州市| 防城港市| 新巴尔虎右旗| 泰安市| 香格里拉县| 德惠市| 寿光市| 镇远县| 阿图什市| 武邑县| 依安县| 建昌县| 扬中市| 汝州市| 长兴县| 搜索| 崇信县| 桑日县| 韶关市| 梅河口市| 文安县|