getClass()。getClassLoader()。getResourceAsStream()正在缓存资源

时间:2010-06-25 21:06:00

标签: java classpath velocity

我有一个资源(速度模板),我希望能够在开发过程中进行交换。但是,

getClass().getClassLoader().getResourceAsStream() 

似乎缓存了模板。除了使用文件加载器而不是类加载器之外,有没有办法禁用它?

3 个答案:

答案 0 :(得分:7)

为避免缓存,您可以使用:

getClass().getClassLoader().getResource().openStream()

我认为使用URLResourceLoader代替ClasspathResourceLoader等于{{1}}。我只想使用文件加载器。

答案 1 :(得分:5)

看看这样的东西是否有帮助(省略了异常处理):

URL res = getClass().getClassLoader().getResource(resName);
if (res != null) {
    URLConnection resConn = res.openConnection();
    resConn.setUseCaches(false);
    InputStream in = resConn.getInputStream();
}

答案 2 :(得分:0)

需要注意的另一件事(除了其他答案中提到的缓存)是您的IDE或构建系统可能会将您的资源移动到构建目录中并将其放在类路径中。因此,您正在源目录中编辑的文件不是正在提供的文件。