é常åçåªæ两ç§ï¼ä¸ç§æ¯å¶ä½ä¸ä¸ªå¯æ§è¡ç JAR æ件å
ï¼ç¶åå°±å¯ä»¥å.chm ææ¡£ä¸æ ·åå»è¿è¡äºï¼èå¦ä¸ç§æ¯ä½¿ç¨ JET æ¥è¿è¡ ç¼è¯ãä½æ¯ JET æ¯è¦ç¨é±ä¹°çï¼èä¸æ®è¯´ JET ä¹ä¸æ¯è½æææç Java ç¨åºé½ç¼è¯ææ§è¡æ件ï¼æ§è½ä¹è¦æäºææ£ãæ以ï¼ä½¿ç¨å¶ä½å¯æ§è¡ JAR æ件å
çæ¹æ³å°±æ¯æä½³éæ©äºï¼ä½åµå®è¿è½ä¿æ Java ç跨平å°ç¹æ§ã ä¸é¢å°±æ¥ççä»ä¹æ¯ JAR æ件å
å§ï¼ 1. JAR æ件å
JAR æä»¶å°±æ¯ Java Archive Fileï¼é¡¾åæä¹ï¼å®çåºç¨æ¯ä¸ Java æ¯æ¯ç¸å
³çï¼æ¯ Java çä¸ç§ææ¡£æ ¼å¼ãJAR æ件é常类似 ZIP æ件?åç¡®ç说ï¼å®å°±æ¯ ZIP æ件ï¼æ以å«å®æ件å
ãJAR æä»¶ä¸ ZIP æ件å¯ä¸çåºå«å°±æ¯å¨ JAR æ件çå
容ä¸ï¼å
å«äºä¸ä¸ª META-INF/MANIFEST.MF æ件ï¼è¿ä¸ªæ件æ¯å¨çæ JAR æ件çæ¶åèªå¨å建çã举个ä¾åï¼å¦ææ们å
·æå¦ä¸ç®å½ç»æçä¸äºæä»¶ï¼ == `-- test `-- Test.class æå®å缩æ ZIP æ件 test.zipï¼åè¿ä¸ª ZIP æ件çå
é¨ç®å½ç»æä¸ºï¼ test.zip `-- test `-- Test.class å¦ææä»¬ä½¿ç¨ JDK ç jar å½ä»¤æå®ææ JAR æ件å
test.jarï¼åè¿ä¸ª JAR æ件çå
é¨ç®å½ç»æä¸ºï¼ test.jar |-- META-INF | `-- MANIFEST.MF `-- test `--Test.class 2. å建å¯æ§è¡ç JAR æ件å
å¶ä½ä¸ä¸ªå¯æ§è¡ç JAR æ件å
æ¥åå¸ä½ çç¨åºæ¯ JAR æ件å
æå
¸åçç¨æ³ã Java ç¨åºæ¯ç±è¥å¹²ä¸ª .class æ件ç»æçãè¿äº .class æ件å¿
é¡»æ ¹æ®å®ä»¬æå±çå
ä¸åèå级åç®å½åæ¾ï¼è¿è¡åéè¦æææç¨å°çå
çæ ¹ç®å½æå®ç» CLASSPATH ç¯å¢åéæè
java å½ä»¤ç -cp åæ°ï¼è¿è¡æ¶è¿è¦å°æ§å¶å°ä¸å»ä½¿ç¨ java å½ä»¤æ¥è¿è¡ï¼å¦æéè¦ç´æ¥åå»è¿è¡å¿
é¡»å Windows çæ¹å¤çæ件 (.bat) æè
Linux ç Shell ç¨åºãå æ¤ï¼è®¸å¤äººè¯´ï¼Java æ¯ä¸ç§æ¹ä¾¿å¼åè
è¦äºç¨æ·çç¨åºè®¾è®¡è¯è¨ã å
¶å®ä¸ç¶ï¼å¦æå¼åè
è½å¤å¶ä½ä¸ä¸ªå¯æ§è¡ç JAR æ件å
交ç»ç¨æ·ï¼é£ä¹ç¨æ·ä½¿ç¨èµ·æ¥å°±æ¹ä¾¿äºãå¨ Windows ä¸å®è£
JRE (Java Runtime Environment) çæ¶åï¼å®è£
æ件ä¼å° .jar æ件æ å°ç» javaw.exe æå¼ãé£ä¹ï¼å¯¹äºä¸ä¸ªå¯æ§è¡ç JAR æ件å
ï¼ç¨æ·åªéè¦åå»å®å°±å¯ä»¥è¿è¡ç¨åºäºï¼åé
读 .chm ææ¡£ä¸æ ·æ¹ä¾¿ (.chm ææ¡£é»è®¤æ¯ç± hh.exe æå¼ç)ãé£ä¹ï¼ç°å¨çå
³é®ï¼å°±æ¯å¦ä½æ¥å建è¿ä¸ªå¯æ§è¡ç JAR æ件å
ã å建å¯æ§è¡ç JAR æ件å
ï¼éè¦ä½¿ç¨å¸¦ cvfm åæ°ç jar å½ä»¤ï¼åæ ·ä»¥ä¸è¿° test ç®å½ä¸ºä¾ï¼å½ä»¤å¦ä¸ï¼ jar cvfm test.jar manifest.mf test è¿étest.jar å manifest.mf 两个æ件ï¼åå«æ¯å¯¹åºçåæ° f å mï¼å
¶é头æå¨ manifest.mfãå 为è¦å建å¯æ§è¡ç JAR æ件å
ï¼å
é æå®ä¸ä¸ª manifest.mf æ件æ¯ä¸å¤çï¼å 为 MANIFEST æ¯ JAR æ件å
çç¹å¾ï¼å¯æ§è¡ç JAR æ件å
åä¸å¯æ§è¡ç JAR æ件å
é½å
å« MANIFESTãå
³é®å¨äºå¯æ§è¡ JAR æ件å
ç MANIFESTï¼å
¶å
容å
å«äº Main-Class ä¸é¡¹ãè¿å¨ MANIFEST ä¸ä¹¦åæ ¼å¼å¦ä¸ï¼ Main-Class: å¯æ§è¡ä¸»ç±»å
¨å(å
å«å
å) ä¾å¦ï¼å设ä¸ä¾ä¸ç Test.class æ¯å±äº test å
çï¼èä¸æ¯å¯æ§è¡çç±» (å®ä¹äº public static void main(String[]) æ¹æ³)ï¼é£ä¹è¿ä¸ª manifest.mf å¯ä»¥ç¼è¾å¦ä¸ï¼ Main-Class: test.Test <å车> è¿ä¸ªmanifest.mf å¯ä»¥æ¾å¨ä»»ä½ä½ç½®ï¼ä¹å¯ä»¥æ¯å
¶å®çæ件åï¼åªéè¦æ Main-Class: test.Test ä¸è¡ï¼ä¸è¯¥è¡ä»¥ä¸ä¸ªå车符ç»æå³å¯ãåå»ºäº manifest.mf æ件ä¹åï¼æ们çç®å½ç»æåä¸ºï¼ == |-- test | `-- Test.class `-- manifest.mf è¿æ¶åï¼éè¦å° test ç®å½çä¸çº§ç®å½ä¸å»ä½¿ç¨ jar å½ä»¤æ¥å建 JAR æ件å
ãä¹å°±æ¯å¨ç®å½æ ä¸ä½¿ç¨â==â表示çé£ä¸ªç®å½ä¸ï¼ä½¿ç¨å¦ä¸å½ä»¤ï¼ jar cvfm test.jar manifest.mf test ä¹åå¨â==âç®å½ä¸åå»ºäº test.jarï¼è¿ä¸ª test.jar å°±æ¯æ§è¡ç JAR æ件å
ãè¿è¡æ¶åªéè¦ä½¿ç¨ java -jar test.jar å½ä»¤å³å¯ã éè¦æ³¨æçæ¯ï¼å建ç JAR æ件å
ä¸éè¦å
å«å®æ´çãä¸ Java ç¨åºçå
ç»æ对åºçç®å½ç»æï¼å°±åä¸ä¾ä¸æ ·ãè Main-Class æå®çç±»ï¼ä¹å¿
é¡»æ¯å®æ´çãå
å«å
è·¯å¾çç±»åï¼å¦ä¸ä¾ç test.Testï¼èä¸å¨æ²¡æææ JAR æ件å
ä¹åå¯ä»¥ä½¿ç¨ java <ç±»å> æ¥è¿è¡è¿ä¸ªç±»ï¼å³å¨ä¸ä¾ä¸ java test.Test æ¯å¯ä»¥æ£ç¡®è¿è¡ç (å½ç¶è¦å¨ CLASSPATH æ£ç¡®çæ
åµä¸)ã 3. jar å½ä»¤è¯¦è§£ jar æ¯é JDK å®è£
çï¼å¨ JDK å®è£
ç®å½ä¸ç bin ç®å½ä¸ï¼Windows ä¸æ件å为 jar.exeï¼Linux ä¸æ件å为 jarãå®çè¿è¡éè¦ç¨å° JDK å®è£
ç®å½ä¸ lib ç®å½ä¸ç tools.jar æ件ãä¸è¿æ们é¤äºå®è£
JDK ä»ä¹ä¹ä¸éè¦åï¼å 为 SUN å·²ç»å¸®æ们å好äºãæ们çè³ä¸éè¦å° tools.jar æ¾å° CLASSPATH ä¸ã 使ç¨ä¸å¸¦ä»»ä½ç jar å½ä»¤æ们å¯ä»¥çå° jar å½ä»¤çç¨æ³å¦ä¸ï¼ jar {ctxu}[vfm0M] [jar-æ件] [manifest-æ件] [-C ç®å½]æ件å ... å
¶ä¸{ctxu} æ¯ jar å½ä»¤çåå½ä»¤ï¼æ¯æ¬¡ jar å½ä»¤åªè½å
å« ctxu ä¸çä¸ä¸ªï¼å®ä»¬åå«è¡¨ç¤ºï¼ -c å建æ°ç JAR æ件å
-t ååº JAR æ件å
çå
容å表 -x å±å¼ JAR æ件å
çæå®æ件æè
æææ件 -u æ´æ°å·²åå¨ç JAR æ件å
(æ·»å æä»¶å° JAR æ件å
ä¸) [vfm0M] ä¸çé项å¯ä»¥ä»»éï¼ä¹å¯ä»¥ä¸éï¼å®ä»¬æ¯ jar å½ä»¤çé项åæ° -v çæ详ç»æ¥å并æå°å°æ åè¾åº -f æå® JAR æ件åï¼é常è¿ä¸ªåæ°æ¯å¿
é¡»ç -m æå®éè¦å
å«ç MANIFEST æ¸
åæ件 -0 åªåå¨ï¼ä¸å缩ï¼è¿æ ·äº§çç JAR æ件å
ä¼æ¯ä¸ç¨è¯¥åæ°äº§ççä½ç§¯å¤§ï¼ä½é度æ´å¿« -M ä¸äº§çææ项çæ¸
åï¼MANIFESTãæ件ï¼æ¤åæ°ä¼å¿½ç¥ -m åæ° [jar-æ件] å³éè¦çæãæ¥çãæ´æ°æè
解å¼ç JAR æ件å
ï¼å®æ¯ -f åæ°çéå±åæ° [manifest-æ件] å³ MANIFEST æ¸
åæ件ï¼å®æ¯ -m åæ°çéå±åæ° [-C ç®å½] 表示转å°æå®ç®å½ä¸å»æ§è¡è¿ä¸ª jar å½ä»¤çæä½ãå®ç¸å½äºå
ä½¿ç¨ cd å½ä»¤è½¬è¯¥ç®å½ä¸åæ§è¡ä¸å¸¦ -C åæ°ç jar å½ä»¤ï¼å®åªè½å¨å建åæ´æ° JAR æ件å
çæ¶åå¯ç¨ã æ件å ... æå®ä¸ä¸ªæ件/ç®å½å表ï¼è¿äºæ件/ç®å½å°±æ¯è¦æ·»å å° JAR æ件å
ä¸çæ件/ç®å½ãå¦ææå®äºç®å½ï¼é£ä¹ jar å½ä»¤æå
çæ¶åä¼èªå¨æ该ç®å½ä¸çæææ件ååç®å½æå
¥å
ä¸ã ä¸é¢ä¸¾ä¸äºä¾åæ¥è¯´æ jar å½ä»¤çç¨æ³ï¼ 1) jar cf test.jar test 该å½ä»¤æ²¡ææ§è¡è¿ç¨çæ¾ç¤ºï¼æ§è¡ç»ææ¯å¨å½åç®å½çæäº test.jar æ件ã 2) jar cvf test.jar test 该å½ä»¤ä¸ä¸ä¾ä¸çç»æç¸åï¼ä½æ¯ç±äº v åæ°çä½ç¨ï¼æ¾ç¤ºåºäºæå
è¿ç¨ï¼å¦ä¸ï¼ æ ææ¸
å(manifest) å¢å ï¼test/(读å
¥= 0) (ååº= 0)(åå¨äº 0%) å¢å ï¼test/Test.class(读å
¥= 7) (ååº= 6)(åç¼©äº 14%) 3) jar cvfM test.jar test 该å½ä»¤ä¸ 2) ç»æ类似ï¼ä½å¨çæç test.jar ä¸æ²¡æå
å« META-INF/MANIFEST æ件ï¼æå
è¿ç¨çä¿¡æ¯ä¹ç¥æå·®å«ï¼ å¢å ï¼test/(读å
¥= 0) (ååº= 0)(åå¨äº 0%) å¢å ï¼test/Test.class(读å
¥= 7) (ååº= 6)(åç¼©äº 14%) 4) jar cvfm test.jar manifest.mf test è¿è¡ç»æä¸ 2) ç¸ä¼¼ï¼æ¾ç¤ºä¿¡æ¯ä¹ç¸åï¼åªæ¯çæ JAR å
ä¸ç META-INF/MANIFEST å
容ä¸åï¼æ¯å
å«äº manifest.mf çå
容 5) jar tf test.jar å¨test.jar å·²ç»åå¨çæ
åµä¸ï¼å¯ä»¥æ¥ç test.jar ä¸çå
容ï¼å¦å¯¹äº 2) å 3) çæç test.jar åå«åºè¯¥æ¤å½ä»¤ï¼ç»æå¦ä¸ï¼ 对äº2) META-INF/ META-INF/MANIFEST.MF test/ test/Test.class 对äº3) test/ test/Test.class 6) jar tvf test.jar é¤æ¾ç¤º 5) ä¸æ¾ç¤ºçå
容å¤ï¼è¿å
æ¬å
å
æ件ç详ç»ä¿¡æ¯ï¼å¦ï¼ 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
温馨提示:内容为网友见解,仅供参考