为什么有时 Java 不请求新版本的 jar 文件?
每次我们更新 Java 应用程序(Java 客户端和 Java 服务器)时,我们都会遇到一些客户端大约出现的问题。 1% - 2% 不加载新的 jar 文件。 Applet 和 Java Web Start 都会出现这种情况。 如果清除 Java 缓存,则一切正常。
知道为什么 Java 不在每次启动时检查新的 jar 文件吗?
Every time we update our Java application (Java client and Java server) we have the problems that some clients approx. 1% - 2% does not load the new jar files. This occur with applets and also with Java Web Start. If you clear the Java Cache then all is working correct.
Any idea why Java does not check for new jar files on every start?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能很难解决,但有一个简单的解决方法。 不必依赖正确的缓存更新,只需确保 JAR 文件名包含应用程序的版本/内部版本号即可。 新版本小程序的 JAR 文件将有效地存在于其他 URL 上(您还必须更改引导网页)。
This can be problematic to resolve but there is an easy workaround for this. Instead of relying on correct cache-update, just make sure that JAR file names include version / build number of the application. JAR files for new version of applet will then effectively live on other URL (you also have to change the bootstrap web-page).
我去过那里,唯一 100% 保证有效的解决方案是对您的资源(jar、图像等)使用不同的路径/url。 没有人能保证这不是缓存机制中的错误(如果你查看每 2-3 个版本的 JDK 更改列表,就会发现与 jar 的缓存机制相关的内容)。
因此,就这样吧(只需将上次修改时间作为字符串附加在 jar url 的末尾),您将不会遇到任何问题:
例如: http://myserver/applet/codebase/your_jar.jar?v=2487387543434 下一个版本将是 http://myserver/applet/codebase/your_jar.jar?v=343438534545455 <- 这是 jar 的最后修改时间。
I've been there and the only solution which is 100% guaranteed to work is to have a different path/url to your resources(jars, images, etc). Nobody can guarantee that cannot be bugs in the caching mechanism(if you look in the JDK change list every 2-3 releases there is something related with caching mechanism of jars) .
So go with that(just append last modified time as string at the end of the jar url) and you will not have any problems:
Ex : http://myserver/applet/codebase/your_jar.jar?v=2487387543434 and next version it will be http://myserver/applet/codebase/your_jar.jar?v=343438534545455 <- this is jar's last modified time.