【发布时间】:2014-05-19 13:41:01
【问题描述】:
我知道有很多关于这个话题的问题。但它们主要是关于保留类和变量的状态。
我想让我的应用程序获取最新版本(全部打包在一个 jar 中)并自行重启。
我的应用程序使用 main() 函数作为起点,所以我只初始化一个类,整个应用程序就从那里开始。所以这让我思考。我可以在 main() 中停止整个应用程序。覆盖旧 jar,然后 JVM 理论上可以重新加载除包含 main() 的类之外的所有类,并且 main 将重新初始化所有内容并运行它。
这是不是太麻烦了?我是否应该只使用仅处理启动所述 jar 并下载它的最新版本的引导 jar。
【问题讨论】:
-
引导 shell 脚本可能是最简单的。
-
你想在运行时更改 jar 吗?并且不想重新启动 JVM?
-
根据我的猜测,您至少需要 a) 主类和可重载类的不同 jar b) 仅在主类中使用反射 c) 很可能为可重载 jar 使用不同的 ClassLoader
标签: java class jvm classloader