java Class.getResource和ClassLoader.getResource

Class.getResourceAsStream()  指定要加载的资源路径与当前类所在包的路径一致。

例如你写了一个MyTest类在包com.test.mycode 下,那么MyTest.class.getResourceAsStream("name") 会在com.test.mycode包下查找相应的资源。
如果这个name是以 '/' 开头的,那么就会从classpath(即com的上级目录开始)的根路径下开始查找。

 

ClassLoader.getResourceAsStream()  无论要查找的资源前面是否带'/' 都会从classpath的根路径下查找。 

所以: 
MyTest.getClassLoader().getResourceAsStream("name") 和 
MyTest.getClassLoader().getResourceAsStream("/name") 的效果是一样的。

 

如果是运行jar文件里的类的main方法时候,MyTest.class.getResourceAsStream()会在jar文件里的这个类的目录下查找。

如 MyTest.class.getResourceAsStream(“”)的输出结果是

jar:file:/C:/power/testres.jar!/com/test/mycode/

ClassLoader.getResourceAsStream() 则是在jar文件统计目录下查找资源,

如ClassLoader.getResourceAsStream(“”)输出结果是 

file:/C:/power/

posted @ 2017-12-07 00:51  xingi386  阅读(174)  评论(0编辑  收藏  举报