当前位置: 首页 > 知识库问答 >
问题:

JarFileFactory缓存jar文件

沃宇
2023-03-14

我有Spring启动应用程序,它由2个模块组成:前端和Spring启动应用程序项目(前端是Spring启动应用程序的等级依赖性)。

如果我运行gradle bootRunapp启动并正常工作,然后我更改某些内容,gradle重建项目并替换frontend.jar.前端仅包含静态资源。它们被添加到类路径中,Spring可以为这些静态文件的请求提供服务。用构建替换frontend.jar后,无法加载自动重启Spring应用程序资源,发生了zip错误,它们在我之前的问题中描述过。

我调试应用程序,深入java内部类,发现frontend.jar缓存在JarFileFactory中:

private JarFile getCachedJarFile(URL url) {
    assert Thread.holdsLock(instance);
    JarFile result = fileCache.get(urlKey(url)); // <- fileCache contains my frontend.jar
    ...
}

文件缓存包含我的罐子。在调试中,我尝试在URL连接中禁用此文件的缓存:

   protected URLConnection(URL url) {
    this.url = url;
    if (url == null) {
        this.useCaches = defaultUseCaches;
    } else {
        this.useCaches = getDefaultUseCaches(url.getProtocol()); // <- here I change this.useCaches to false in debugger
    }
}

禁用此文件的缓存后,当前请求工作正常。下一个请求(如果我不更改调试器中的 useCaches)将失败并出现相同的错误。

但是我找不到从应用程序中禁用jar缓存的方法(或者在应用程序重新加载时从缓存中一次性删除)。

如何正确清理应用程序的jar缓存?或者强制不使用缓存来存放我的罐子?或者在开发时配置gradle,直接在磁盘上使用文件,而不是在jar中?

暂时还没有答案

 类似资料:
  • 按照一般app的设计,都是主应用,和用户目录下的缓存文件,把用户自定义的或使用生成的文件都放到缓存文件目录里。鉴于此,我们来找找code.app的缓存文件,或许能发现点有用的东西 可参照 https://code.visualstudio.com/docs/customization/userandworkspace 理解 缓存目录详情 目录是 /Users/sang/Library/Applic

  • 问题内容: 我有一个系统,其中将缓存最大使用率设置为0,并且在我对style.css进行了一些更改时出现问题。css失败,更改不会出现在客户端上。浏览器将使用旧的CSS缓存版本。我有一个简单的问题:将css文件命名为style.css?123是否会作为新缓存? 问题答案: 是的,在资源的URI中添加唯一的查询字符串将强制客户端获取“新”版本(因为客户端不知道这仅仅是对先前缓存的资源的 更新 )。这

  • 问题内容: 哪种方法能让浏览器使用js文件的缓存版本(从服务器端)? 问题答案: 或.htaccess文件中

  • 介绍 FileCache主要是将小文件以byte[]的形式缓存到内存中,减少文件的访问,以解决频繁读取文件引起的性能问题。 实现 LFUFileCache LRUFileCache 使用 //参数1:容量,能容纳的byte数 //参数2:最大文件大小,byte数,决定能缓存至少多少文件,大于这个值不被缓存直接读取 //参数3:超时。毫秒 LFUFileCache cache = new LFUFi

  • 问题内容: 我可以使用javasound标签Wiki页面上的“正在播放”解决方案来读取和播放声音。但是,对于经常播放的声音(例如,快速的激光枪声,脚步声等),每次创建新文件时打开流并重新读取文件对我来说是不舒服的。因此,我尝试将读取的文件缓存到,然后从缓存加载它们。 加载部分很容易: 但是,最初将文件内容放入字节数组是一个挑战。问题是我正在尝试从 .jar中 包含的文件中读取声音- 因此使用不是一

  • 修改全局配置 phpGrace/config.php 'cache' => array( 'type' => 'file', 'pre' => 'grace_' //缓存变量前缀 ) 演示示例 <?php class indexController extends grace{ //根据缓存情况设置、读取缓存数据