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

为什么无法load class
在同一个package底下建立了两个类Class1,和Class2
在Class1的函数中写下:

Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");
运行时报错:Exception in thread "main" java.lang.ClassNotFoundException: Class2
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at Package1.Class1.main(Class1.java:20)

同一位置,如果改成:
Class<?> clazz2 = Class2.class;
就对了

为什么?

------解决方案--------------------
Class<?> clazz2 = ClassLoader.getSystemClassLoader().loadClass("Class2");

是不是要加包名 所说在同一个包下 但是毕竟有双引号