java - 在java中热交换jar文件

标签 java jar hotswap

我有两个 jar 文件。 一个.jar 包含启动进程的主要方法,其他两个.jar 仅包含类文件。

在 One.jar 中,我在其 list 类路径中引用了 two.jar。

One.jar 包含使用 Class.forName() 动态加载类的机制

我只想在一生中只部署一次 One.jar。不会对其进行任何更改。

变化只会发生在 two.jar 中

我想用更新的 two.jar 热交换 two.jar。我也看过其他关于热插拔的帖子,比如 OSGi、ANT 的热插拔,但对我没有任何帮助。

经过一些研究发现 JRebel 在这方面确实做得更好,但我真的不知道如何将它与这些 jar 集成?我坚持了将近 2 天。只需几步信息即可完成此操作。请有人帮助我...这对我来说真的很重要...谢谢

最佳答案

嘿,我终于找到了解决方案。我真的不知道我会想出这么简单的解决方案。我接受了@Thorbjørn Ravn Andersen 的想法。我所做的只是首先获取 jar 文件的时间戳,然后使用 URLClassLoader 加载 jar。如果 jar 文件的时间戳发生变化(即当我用更新的 jar 替换 jar 时),那么我将使用 close() 丢弃旧的 URLClassLoader 对象并再次使用 URLClassLoader 加载新的 jar。我每次唯一要检查的是 jar 的时间戳是否改变。希望这个答案也能帮助其他人。感谢大家的支持。

关于java - 在java中热交换jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913149/

相关文章:

java - Libgdx 像素化 GUI 效果

java - 远程文件访问客户端

java - 在 jar 中调用一个 exe 文件

android - SIM卡热插拔安卓

objective-c - Xcode 中的热代码交换?

erlang - 在 Erlang 的 gen_server 中实现代码交换

java - 岛屿策略游戏基本距离

java - 错误: method addActionListener in class Button cannot be applied to given types;

java - JAR list 文件 - 规范和实现之间的区别

java - maven 生成的 WAR/JAR 文件不提供代码的最实际版本