Posted on 2010-07-29 15:54
天快黑了 阅读(297)
评论(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 }