classLoader.getResource(name)
该方法只能接收一个相对路径,不能接收绝对路径
。并且,接收的相对路径是相对于项目的包的根目录
来说的。
Class.getResource(name)
name可以是文件的相对路径(相对于该class类来说),也可以是绝对路径(绝对路径的话,根目录符号/是代表项目路径而不是磁盘的根目录)
。
对于Class.getResource:
先获取文件的路径path,不以’/‘开头时,默认是从此类所在的包下取资源;path以’/'开头时,则是从项目的ClassPath根下获取资源。
对于ClassLoader.getResource:
同样先获取文件的路径,path不以’/'开头时,首先通过双亲委派机制,使用的逐级向上委托的形式加载的,最后发现双亲没有加载到文件,最后通过当前类加载classpath根下资源文件。
对于getResource("/"),’/'表示Boot ClassLoader中的加载范围,因为这个类加载器是C++实现的,所以加载范围为null。