å¨JAVAå¼åä¸ï¼main线ç¨ä¸æåºjava.lang.NoClassDefFoundErroræ¯ä¸ä¸ªé常æ®éä¸æ¯è¾é¾è§£å³çé®é¢ã解å³è¿ä¸ªé®é¢çå¤ææ§ä¸»è¦åå³äºä½ ç软件大å°åä¸é´ä»¶é¨ç½²æ
åµï¼å°¤å
¶è¦èèå¨åºç¨ä¸åºç°çæ°éä¼å¤çclassloaderçæ
åµã
æ¬æå°ä»ä¸ä¸ªæ¯è¾é«çè§åº¦çè¿ä¸ªé®é¢ï¼ä¸»è¦æ¯ä»ç»java classloaderæºå¶ã
æ们å
ç®åççä¸ä¸è¿ä¸ªé®é¢ï¼è¿ä¸ªruntimeå¼å¸¸æ¯JVMæåºçï¼å½JVMåç°ä¸ä¸ªclassloaderè¯å¾å»Loadä¸ä¸ªclassï¼èæ¤classå¨å½åçclassloader treeä¸æ¾ä¸å°çæ¶åï¼å°±ä¼æåºæ¤å¼å¸¸ã
å¾ææ¾ï¼è¿ä¸ªé®é¢æ¯è¿è¡æçé®é¢ï¼å¨ç¼è¯æä¸åæ£å¸¸ã
okï¼å°è¿éè¿ä¸è¡ï¼è¿ä¸ªé®é¢è§£å³èµ·æ¥ä¸æ¯é£ä¹å®¹æçï¼å¨è¿è¡æçç¨åºclasspathä¸å å
¥ç¼ºå°çjarå
ä»
ä»
æ¯ä¸ç§è§£å³æ¹æ³ãå
³é®æ¯ï¼æ们å¿
é¡»ææ¡æ¤ç§å¼å¸¸çæ ¹æ¬åå ï¼ä»¥å解å³æ¤é®é¢å°±å¯ä»¥ä»¥ä¸ååºä¸åãè¿å°±æ¯æåè¿ä¸ªæç« çåè¡·ã
ç°å¨ï¼å
è®°ä½ï¼æ¤é®é¢ä¸ä¸å®æ¯ç±äºå¨classpathä¸ç¼ºå°classçå®ä¹ã
java classloaderæ¦è¿°
å¨æ·±å
¥åæä¹åï¼æ们å¿
é¡»ææ¡java classloaderçåºæ¬åçãclass loaderæ¯ä¸ä¸ªjava对象ï¼å®è´è´£loadææçclassï¼è´è´£æ¥æ¾ãå è½½ãçæä¸ä¸ªclassçåºæ¬å®ä¹ä¿¡æ¯ãclassloaderèªèº«éç¨äºå§æ代çæºå¶æ¥æ¥è¯¢classï¼æ¯ä¸ä¸ªclassloaderçå®ä¾é½æä¸ä¸ªç¶classloaderï¼æ以ï¼å½ä¸ä¸ªåºç¨çclassloaderå»å è½½class Açæ¶åï¼é¦å
åççäºæ
æ¯classloaderå§æå
¶ç¶classloaderå»å è½½class Aï¼ç»è¿ä¸ä¸²é¾å¼æ¥æ¾åï¼æç»ä»»å¡ä¼è½å¨JVMçç³»ç»å¯å¨classloaderä¸ã
é£åªéä¼åºé®é¢ï¼å½ä½ ææä½ çåºç¨classloaderè½å è½½class Aï¼ä½æ¯å½class A被å
¶ä»»æä¸ä¸ªç¶classloaderæ¥è¯¢å°å¹¶å è½½ï¼é£ä¹å°±å¯è½ä¼åºç°java.lang.NoClassDefFoundErrorãå½ææçç¶classloaderé½æ¾ä¸å°class Açæ¶åï¼æä¼ç±åºç¨èªå·±çclassloaderå°è¯å è½½ã
温馨提示:内容为网友见解,仅供参考