日期:2014-05-20  浏览次数:20638 次

类加载器的问题,一小段代码,说找不到类。Eclipse一个class文件只能建一个类吗?
package com.zpc.jvm;

class Test3 {
static {
System.out.println("Test3的静态初始化块!");
}
}

public class ClassLoaderTest {
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader c1 = ClassLoader.getSystemClassLoader();
c1.loadClass("Test3");
System.out.println("系统加载Test3类。");
Class.forName("Test3");

}

}

------解决方案--------------------
类加载需要带包名


c1.loadClass("com.zpc.jvm.Test3");
System.out.println("系统加载Test3类。");
Class.forName("com.zpc.jvm.Test3");

------解决方案--------------------
对楼上的补充
ClassLoader 的loadClass并不是对类的主动使用,因此不会导致类的初始化
Class的forName是对类的主动使用,会导致类的初始化,因此静态变量被赋给初始值和静态块会被执行