***.class.getResource(name) 与***.class.getClassLoader().getResource(name)都是Java中获取资源的方法。
- 相同点:
***.class.getResource(name) 与***.class.getClassLoader().getResource(name)都返回java.net.URL来表示资源的路径,URL.getFile()方法获取文件的绝对路径。
- 不同点:
- ***.class.getResource(name) ,如果name是以'/'开头,那么jvm会到当前项目的classpath(classes目录)下查找资源,否则,jvm会在当前类的包下查找文件。如果文件不存在则返回null,存在返回java.net.URL来表示资源的路径。
- ***.class.getClassLoader().getResource(name), 这个方法首先会使用这个类的父类加载器查找资源,如果父类加载器为null,将在BootstrapClassPath下查找资源,如果失败,将会调用ClassLoader的findResource()方法查找资源,这取决于具体的ClassLoader实现。对于name参数不加‘/’,会在这个类的classpath下查找文件。例如Test.class.getgetClassLoader().getResource(name)会在Test类所在的classpath(classes目录)下查找文件。