Posted on 2010-07-29 15:54
天快黑了 閱讀(304)
評論(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 }