项目中遇到一个defect。
代码所示:
出错提示在xxxMethod()方法这里,总是报NoClassDefFoundError
经调试,是class被jvm首次加载时,初始化静态定义时出了错,是XXXUtil类没有method方法,即NoSuchMethodException,但是LOG日志并未直接写出来。
代码编译通过,运行出错,原因是XXXUtil过期,未被服务器加载到最新的代码所致。
通过此defect又重温了一遍java class类加载机制。
http://onjava.com/pub/a/onjava/2005/01/26/classloading.html
代码所示:
class Singleton {
static {
this.variable = XXXUtil.method();
}
private Singleton instance = new Singleton();
public static Singleton getInstance() {...}
}
class XXXInvokeClass {
void xxxMethod() {
Singleton.getInstance();
}
}
出错提示在xxxMethod()方法这里,总是报NoClassDefFoundError
经调试,是class被jvm首次加载时,初始化静态定义时出了错,是XXXUtil类没有method方法,即NoSuchMethodException,但是LOG日志并未直接写出来。
代码编译通过,运行出错,原因是XXXUtil过期,未被服务器加载到最新的代码所致。
通过此defect又重温了一遍java class类加载机制。
http://onjava.com/pub/a/onjava/2005/01/26/classloading.html