Given this code:
/* 1 */ InputStream in1 = ClassLoader.getSystemResourceAsStream("foobar.txt");
/* 2 */ InputStream in2 = this.getClass().getResourceAsStream("/foobar.txt");
Do both return the same resource (I think the answer’s “yes”)?
Do they both access the “same” classpath? Why is the method name in #1 “get System ResourceAsStream”, but for #2 it’s just “getResourceAsStream”?
Thanks
According to the javadoc
The classloader used to load
thisis not necessarily the system classloader. In a simple desktop app, this will probably be true. But webapps – amongst other things – typically have more complex classpath hierarchies and so that won’t necessarily be the same. In a complex classpath, therefore what’s returned will also depend on how many copies of ‘foobar.txt’ are floating around your classpath.The short answer is that you can’t assume that they will return a stream for the same resource.