结论:
Class.getResource(String path)
path路径的前缀不是 ’/’ ,表示从此类所在的包下取资源文件;
path路径的前缀是 ’/’ ,则是从ClassPath根下获取资源文件;
Class.getResource和Class.getResourceAsStream在使用时,路径选择上是一样的。
Class.getClassLoader().getResource(String path)
path 路径前缀不可以用 ’/’ 前缀;
path 路径的前缀,如果没有 ‘/’ 则是从ClassPath根下获取资源文件;
Class.getClassLoader().getResource和Class.getClassLoader().getResourceAsStream在使用时,路径选择上也是一样的。
@Test
public void testClassPath(){
URL resource = AppTest.class.getResource("/");
//file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/
System.out.println(resource);
URL resource1 = AppTest.class.getResource("");
//file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/com/mytest/
System.out.println(resource1);
URL resource2 = AppTest.class.getClassLoader().getResource("");
//file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/
System.out.println(resource2);
URL resource3 = AppTest.class.getClassLoader().getResource("/");
//null
System.out.println(resource3);
}
file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/
file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/com/mytest/
file:/D:/future/ideaWorkSpace/demoList/mytest/target/test-classes/
null
参考:https://www.cnblogs.com/yejg1212/p/3270152.html