A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王大斌 中级黑马   /  2013-4-22 00:05  /  1869 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中。当我们运行程序的时候,类加载器会去指定的位置寻找特定的.class
这就是在我们配置的classPath中寻找
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

但是,当我们使用类加载器加载一个资源文件的时候
Class c = String.class;
            c.getResourceAsStream(name);
            c.getClassLoader().getResourceAsStream(name)
1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。

2. Class.getClassLoader.getResourceAsStream(String path) :默认则是从ClassPath根下获取
这不是与classpath的配置不一样吗,为什么类加载器会去那里寻找资源??而不是在运行的这个类的当前目录下找这个资源,并加载。


困扰了好几天了...

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

3 个回复

倒序浏览
getClass():取得当前对象所属的Class对象   
getClassLoader():取得该Class对象的类装载器
类装载器负责从Java字符文件将字符流读入内存,并构造Class类对象,类装载器自身也是一个类,它也需要被装载到内存中来,这个类就是Bootstrap ClassLoader.,如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,就会从classpath获取,所以保险起见最好还是使用自己写的类来获取classloader

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象

QQ截图20130426234355.png (130.39 KB, 下载次数: 0)

QQ截图20130426234355.png

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马