另類NoClassDefFoundError

          Posted on 2010-07-29 15:54 天快黑了 閱讀(313) 評(píng)論(0)  編輯  收藏 所屬分類: Exception
          通常NoClassDefFoundError產(chǎn)生的原因都是由于用到的class在CLASSPATH中找不到。

          還有下面一種另類的NoClassDefFoundError:
          1. Class A 調(diào)用 Class B
          2. JVM嘗試加載Class B,并執(zhí)行Class B的靜態(tài)塊
          3. Class B的靜態(tài)塊內(nèi)拋出RuntimeException,從而導(dǎo)致JVM加載Class B失敗
          4. 之后,任何類只要調(diào)用Class B,就會(huì)出現(xiàn)NoClassDefFoundError

          大家可以運(yùn)行下面的例子試一下:

          1 public class B 
          2 {
          3     static {
          4         String s = null;
          5         s.substring(0);
          6     }
          7 }

           1 public class A 
           2 {
           3     public static void main(String[] args) 
           4     {
           5         try
           6         {
           7             B b = new B();    
           8         }
           9         catch (Throwable e)
          10         {
          11             e.printStackTrace();
          12         }
          13 
          14         try
          15         {
          16             B b = new B();    
          17         }
          18         catch (Throwable e)
          19         {
          20             e.printStackTrace();
          21         }
          22     }
          23 }

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


          網(wǎng)站導(dǎo)航:
           

          posts - 5, comments - 25, trackbacks - 0, articles - 1

          Copyright © 天快黑了

          主站蜘蛛池模板: 扶沟县| 宝清县| 淅川县| 南陵县| 江都市| 大埔区| 岳阳市| 富裕县| 敦煌市| 宝应县| 临安市| 广南县| 卓尼县| 天祝| 大丰市| 乐平市| 定陶县| 清丰县| 淄博市| 嘉祥县| 随州市| 瑞金市| 虎林市| 麦盖提县| 祥云县| 固镇县| 扶风县| 漳平市| 临西县| 广州市| 普陀区| 怀柔区| 松滋市| 盐山县| 华坪县| 民勤县| 兰西县| 南汇区| 利辛县| 台州市| 凌源市|