问题
I have a resource (velocity template) which I'd like to be able to swap during development. However,
getClass().getClassLoader().getResourceAsStream()
seems to cache the template. Is there a way to disable this besides using a file loader instead of the class loader?
回答1:
To avoid caching you can use:
getClass().getClassLoader().getResource().openStream()
It would be equal to using URLResourceLoader
for Velocity instead of ClasspathResourceLoader
I suppose. I would just go with a file loader.
回答2:
See if something like this helps (exception handling omitted):
URL res = getClass().getClassLoader().getResource(resName);
if (res != null) {
URLConnection resConn = res.openConnection();
resConn.setUseCaches(false);
InputStream in = resConn.getInputStream();
}
回答3:
Another thing to watch out for (besides the caching mentioned in the other answers) is that your IDE or build system might move your resources to your build directory and put that on the class path. So the file you are editing in your source directory is not the file that is being served.
来源:https://stackoverflow.com/questions/3121449/getclass-getclassloader-getresourceasstream-is-caching-the-resource