欢迎使用我的 在线工具

小D

读历史、看小说、写程序都是我所爱。技术不好,头脑不灵光,靠的是兴趣。
随笔 - 35, 文章 - 25, 评论 - 13, 引用 - 0
数据加载中……

Java的ClassLoader

  //当前类的getResource等取得本地资源的方法是以当前类所在的文件夹为当前目录,以bin目录
  //也就是发布后的user.dir目录为根目录。
  //当前ClassLoader去本地资源是以bin目录,或发布后的user.dir目录为当前目录。
  //而ClassLoader的根目录恕我不知。
  //通过如下测试,可得出ClassLoader是没有根目录的。
//  URL ss = SoundPlayTest.class.getClassLoader().getResource("");
//  System.out.println(ss.getPath());
  //我想Eclipse没有使用系统的ClassPath,它的ClassPath是在工程的.classpath文件中定义的。而且我想eclipse是使用的自己的ClassLoader的。

ClassLoader的机制:

Bootstrap ClassLoader/启动类加载器
主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作。
Extension ClassLoader/扩展类加载器
主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作。
System ClassLoader/系统类加载器
主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作。
User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性。

  //getResourceAsStream和ClassLoader.getSystemResourceAsStream的关系
  //首先getResourceAsStream调用自己的ClassLoader加载,如果没有就是用ClassLoader.getSystemResourceAsStream
  //来加载资源。getSystemResourceAsStream从当前ClassLoader的类加载搜索路径中查找资源。所以使用getResourceAsStream
  //也可以加载当前Classpath中的资源。

 

posted on 2009-11-04 20:53 vagasnail 阅读(412) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: