JAR多次下载

时间:2009-03-05 13:42:25

标签: java jar applet download overloading

我在applet上有这个代码。小程序工作正常,但我得到了很多不必要的重复下载。特别是,我注意到每个“getResource”都会触发.JAR文件的下载。

static {
    ac = new ImageIcon(MyClass.class.getResource("images/ac.png")).getImage();
    dc = new ImageIcon(MyClass.class.getResource("images/dc.png")).getImage();
    //...other images
}

如何避免这种情况?

5 个答案:

答案 0 :(得分:3)

只需删除URLConnection.setDefaultUseCaches(false)的所有实例即可解决问题。

请参阅更多详情。

http://java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

答案 1 :(得分:2)

您是否将applet包含在HTML页面中?如果是,请尝试启用JAR缓存,如下所述:http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/applet_caching.html

如果由于某种原因没有帮助:)可能会在您的applet JAR上公开您的资源/图像在Web服务器上并使用单独的HTTP请求到达它们(是的,它的丑陋和是的,它不会减少所需的下载数量,但它至少减少了需要传输的数据量。)

答案 2 :(得分:0)

只有解决方法:

您可以将图像放在jar中的zip文件中,使用ZipInputStream获取它并从那里提取图像。

答案 3 :(得分:0)

您使用哪种Java VM?你使用哪个服务器?

  • Linux上的浏览器插件存在错误。
  • 如果服务器未发送修改日期,则Java无法缓存jar文件。

答案 4 :(得分:0)

如果你的applet总是下载jar,即使jar被缓存,请确保你没有通过API禁用URLConnection的缓存:URLConnection.setUseCachesURLConnection.SetDefaultUseCaches

ImageIcon获取资源的基本机制是URLConnection。调用URLConnection.setDefaultUseCaches(false),设置“所有URLConnections的静态状态的一部分”,这导致JRE忽略缓存并在每次访问时重新下载整个jar。

只需删除setDefaultUseCaches的所有实例即可解决问题。

这是来自http://java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html

的转贴