public class Demo1 {
/*
* 类加载器分类
* 1.引导类加载器 (只加载 java自己的类,因它是C语言写的获取不到,java保护起来)
* 2.扩展类加载器 (只加载扩展类(jre/lib/ext目录下的类))
* 3.系统类加载器 (只有当 引导和扩展加载去都加载不到的类,系统加载器加载,(自己定义的类))
*/
@Test
public void fun1(){
//E:/WEB/XMLTest/sday_01/bin/stu.xml 获取bin目录下的 // 即使src目录下的
String path = Demo1.class.getClassLoader().getResource("stu.xml").getPath();
///E:/WEB/XMLTest/sday_01/bin/cn/test/stu.xml 获取同一个目录下的
String url = Demo1.class.getResource("stu.xml").getPath();
System.out.println(path);
System.out.println(url);
}
//静态方法中
@Test
public static void fun2(){
//当前线程对象 Thread.currentThread().getContextClassLoader() 当前上下文的加载器,即系统加载器
//Thread.currentThread().getContextClassLoader().getResource("stu.xml").getPath();
//获取同一目录下的
URL url = Thread.currentThread().getContextClassLoader().getResource("stu.xml");
String path = url.getPath();
System.out.println(path); //E:/WEB/XMLTest/sday_01/bin/stu.xml
}
// 疑问1. 类加载器怎么只能加载src目录下的资源文件,如果跟src同级目录怎么就获取不到了,或者有其他方法?
2. 为什么src下有的资源文件会自动映射一份到bin里面,而在src外面的却没有,难道是src里的是源文件,经过编译后,要运行的文件都在bin目录下,在src下的资源文件,java也自己copy了一份到bin目录的相关位置....
有点晕@@。。。。。求解释一下下....
|