在运行期,一个Java类是由该类的完全限定名(binary name,二进制名)和用于加载该类的定义类加载器(defining loading)所共同决定的。
如果同样名字(即相同的完全限定名)的类由两个不同的加载器所加载,那么这些类就是不同的,即便.class文件的字节码完全一样,并且从相同的位置加载亦是如此。
1、创建Sample
public class MyTest23 { public static void main(String[] args) { //系统类加载器加载路径 System.out.println(System.getProperty("sun.boot.class.path")); System.out.println(); //扩展类加载器加载路径 System.out.println(System.getProperty("java.ext.dirs")); System.out.println(); //应用类加载器加载路径 System.out.println(System.getProperty("java.class.path")); } }
和之前的代码使用一样的。然后修改启动启动加载器的路径。
运行结果:
在oracle的Hotspot实现中,系统属性sun.boot.class.path 如果改错,则运行会出错,提示错误信息:
Error occurred duing initialization of VM