我正在编写一个自动更新的应用程序。第一次运行时,它会在客户端的计算机上安装 native 库,这样他们就不需要每次都下载它。当它检测到已安装库的版本低于新要求的最低版本时,它会下载并安装新版本。
问题是,在用户关闭并重新启动浏览器(不是选项卡,而是整个浏览器)之前,Java 实际上并未使用新库。这是我试图避免的事情 - 不过,如果用户需要刷新页面,或者关闭它并再次打开它,也没关系。
我尝试在每次小程序启动时将已安装的库复制到临时文件夹,然后总是加载该副本,但无济于事。这里有人做过这样的事吗?有什么好主意吗?操作系统为Linux、JDK 1.5、Firefox。
谢谢!
最佳答案
这正是此错误报告中描述的情况: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5075039 (报告说适用于Windows,但实际上是Java问题)
在 VM 终止之前,Java 代码无法卸载 native dll。一旦 dll 被加载,它就会在 JVM 的生命周期内一直存在,并且 VM 将确保它被加载一次且仅一次。
我认为您的方案可行的唯一方法是您是否可以在加载 dll 之前进行版本检查和更新。一旦使用,您就会被困住。
关于java - 如何在不需要完全重新启动浏览器的情况下替换 Java Applet 中加载的动态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233638/