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/