【发布时间】:2010-12-18 00:54:15
【问题描述】:
我想知道是否有可能有一个 Java 桌面应用程序,在启动时,查看某个 URL,看看它是否需要更新,如果需要,下载必要的 JAR 文件,并将它们添加到正在运行的程序的类路径中.
如果旧 jars 在那里,它们不应该被加载到类加载器中,此时应该是吗?是否可以在加载之前将它们换掉而无需重新启动应用程序?
【问题讨论】:
标签: java jar classpath auto-update
我想知道是否有可能有一个 Java 桌面应用程序,在启动时,查看某个 URL,看看它是否需要更新,如果需要,下载必要的 JAR 文件,并将它们添加到正在运行的程序的类路径中.
如果旧 jars 在那里,它们不应该被加载到类加载器中,此时应该是吗?是否可以在加载之前将它们换掉而无需重新启动应用程序?
【问题讨论】:
标签: java jar classpath auto-update
【讨论】:
应该是可以的。 URLClassLoader 是一个开始的地方。
【讨论】:
有可能,但容易出错。
一种更简洁的方法是让一个不依赖任何可更新 JAR 的“启动器”应用程序执行上述操作,然后启动实际应用程序。
您可能想查看this question 以了解有关此主题的更多详细信息。
【讨论】:
Java Web Start 可能是您最好的选择。所需的 jar 文件应在描述符中标识,以便您管理版本控制。
如果您有一个动态应用程序需要在运行时动态发现和下载类,那么您可以查看Dynamic code downloading using RMI。
【讨论】:
Java Web Start 是一个不错的选择,但有一些怪癖。值得注意的是:
但是当它工作得很好。据我所知,让给定 Java 应用程序提供可轻松更新的集中版本是最简单的方法。
--
编辑:最新的 Java 6 中似乎存在“启动程序并透明地下载更新(如果可用)”功能。我还没有尝试过,但很快就会尝试。
【讨论】: