class.getResource和getClassLoader.getResource的路径以及结合“/”可以获取java项目编译后的类路径,就是我们众所周知的classes目录,加"/"与否以及使用class.getResource还是使用getClassLoader.getResource,得到的结果不尽相同,有什么区别呢?
package com.sms.service.impl; import java.net.URL; public class ConfigServiceImpl { public static void main(String[] args) { URL url1 = ConfigServiceImpl.class.getResource("param.properties"); URL url2 = ConfigServiceImpl.class.getResource("/param.properties"); URL url3 = ConfigServiceImpl.class.getClassLoader().getResource("param.properties"); URL url4 = ConfigServiceImpl.class.getClassLoader().getResource("/param.properties"); System.out.println(url1); System.out.println(url2); System.out.println(url3); System.out.println(url4); } }
执行结果如下:
file:/D:/workspace3/sms/build/classes/com/sms/service/impl/param.properties file:/D:/workspace3/sms/build/classes/param.properties file:/D:/workspace3/sms/build/classes/param.properties null
总结:
1.class.getResource可以与"/"结合使用,/放在最开头。不带/,得到的是ConfigServiceImpl.class所在目录下的param.properties;带/,则是获取类路径(classes)下的param.properties。
2.getClassLoader().getResource不可以与"/"结合使用,总是获取类路径(classes)下的param.properties