黑马程序员技术交流社区

标题: 关于类加载器 [打印本页]

作者: 王大斌    时间: 2013-4-22 00:05
标题: 关于类加载器
在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的配置不一样吗,为什么类加载器会去那里寻找资源??而不是在运行的这个类的当前目录下找这个资源,并加载。


困扰了好几天了...
作者: 肖川    时间: 2013-4-23 13:16
getClass():取得当前对象所属的Class对象   
getClassLoader():取得该Class对象的类装载器
类装载器负责从Java字符文件将字符流读入内存,并构造Class类对象,类装载器自身也是一个类,它也需要被装载到内存中来,这个类就是Bootstrap ClassLoader.,如果一个类是通过bootstrap 载入的,那我们通过这个类去获得classloader的话,就会从classpath获取,所以保险起见最好还是使用自己写的类来获取classloader
作者: 尹丽峰    时间: 2013-4-26 23:44
类加载器(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

作者: 黄玉昆    时间: 2013-4-27 22:33
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2