我在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
}
如何避免这种情况?
答案 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?你使用哪个服务器?
答案 4 :(得分:0)
如果你的applet总是下载jar,即使jar被缓存,请确保你没有通过API禁用URLConnection
的缓存:URLConnection.setUseCaches
和URLConnection.SetDefaultUseCaches
。
ImageIcon
获取资源的基本机制是URLConnection
。调用URLConnection.setDefaultUseCaches(false)
,设置“所有URLConnections
的静态状态的一部分”,这导致JRE忽略缓存并在每次访问时重新下载整个jar。
只需删除setDefaultUseCaches
的所有实例即可解决问题。
这是来自http://java-junction.blogspot.com/2009/11/applet-jar-caching-not-working.html
的转贴