另類NoClassDefFoundError

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

          還有下面一種另類的NoClassDefFoundError:
          1. Class A 調用 Class B
          2. JVM嘗試加載Class B,并執行Class B的靜態塊
          3. Class B的靜態塊內拋出RuntimeException,從而導致JVM加載Class B失敗
          4. 之后,任何類只要調用Class B,就會出現NoClassDefFoundError

          大家可以運行下面的例子試一下:

          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 }

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

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

          Copyright © 天快黑了

          主站蜘蛛池模板: 蕉岭县| 拜城县| 集安市| 武川县| 灌南县| 襄垣县| 哈巴河县| 宝山区| 广平县| 南城县| 花莲县| 新乡县| 南宁市| 桓仁| 合水县| 务川| 科尔| 敖汉旗| 剑川县| 华坪县| 长沙市| 仁化县| 合肥市| 南皮县| 六盘水市| 增城市| 镇安县| 正阳县| 义马市| 子长县| 湖北省| 辉南县| 枣庄市| 鲁甸县| 瓮安县| 玛纳斯县| 金门县| 荥经县| 盐池县| 阿巴嘎旗| 赞皇县|