【发布时间】:2011-04-06 23:54:43
【问题描述】:
我正在构建一个更新系统,我需要能够在运行时替换一个正在运行的应用程序 jar 的引用 jar。但是,当我尝试在 jar 上执行文件实用程序功能(例如“setLastModified”)时,我在 Windows 上遇到了文件锁定问题。
经过一番谷歌搜索后,我发现了这个 sn-p...
我在研究中发现 标准类加载器 实现 从不 关闭一个 jar 文件一旦打开。它也是 只从 jar 文件中加载资源 如所须。所以在任何特定的时间, jar文件中可能有类 尚未加载到内存中。 显然,如果你删除jar文件 从 ClassLoader 下出来,它 试图在 丢失文件,你会得到一个 至少IOException。
有没有人可以参考有关执行此操作或解决此问题的信息?
谢谢。
【问题讨论】:
-
你需要重新发明轮子吗? OSGi 已经进行了热部署。看看你是否可以使用它。
-
OSGi 对于大多数要求来说听起来像是压倒性的,看看这个答案stackoverflow.com/a/2463978/320594
-
重新阅读后,您似乎希望使用新的 jar 来保持应用程序运行......所以 OSGi 看起来确实是一个很好的解决方案 :),例如 Eclipse 允许这样做(插件重新加载,而运行)并为此使用 OSGi(据我所知)。
标签: java file plugins jar locking