彻底搞懂Class.getResource和ClassLoader.getResource的区别和底层原理

项目路径
项目路径

classLoader.getResource(name)
该方法的作用与class.getResource(name)的作用一样,接收一个表示路径的参数,返回一个URL对象,该URL对象表示name对应的资源(文件)。但是,与class.getResource(name)不同的是,该方法只能接收一个相对路径,不能接收绝对路径如/xxx/xxx。并且,接收的相对路径是相对于项目的包的根目录来说的。
System.out.println(this.getClass().getClassLoader().getResource(""));
System.out.println(this.getClass().getClassLoader().getResource("/"));
System.out.println(this.getClass().getClassLoader().getResource(“ehcache-setting.xml”));
System.out.println(this.getClass().getClassLoader().getResource("/ehcache-setting.xml"));
结果:
file:/D:/EclipseWorkSpace/test/target/classes/
null
null
null

Class.getResource(name)
该方法接收一个表示文件路径的数,返回一个URL对象,该URL对象表示的name指向的那个资源(文件)。这个方法是在类中根据name获取资源。其中,name可以是文件的相对路径(相对于该class类来说),也可以是绝对路径(绝对路径的话,根目录符号/是代表项目路径而不是磁盘的根目录)。
System.out.println(this.getClass().getResource(""));
System.out.println(this.getClass().getResource("/"));
System.out.println(this.getClass().getResource(“ehcache-setting.xml”));
System.out.println(this.getClass().getResource("/ehcache-setting.xml"));
结果:
file:/D:/EclipseWorkSpace/test/target/classes/com/practies/test/
file:/D:/EclipseWorkSpace/test/target/classes/
file:/D:/EclipseWorkSpace/test/target/classes/com/practies/test/ehcache-setting.xml
null

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值