我想知道是否有可能有一个 Java 桌面应用程序,在启动时,查看一些 URL,看看它是否需要更新,如果需要,下载必要的 JAR 文件,并将它们添加到正在运行的程序的类路径中。
如果旧 jars 在那里,它们不应该被加载到类加载器中,此时应该是吗?是否可以在加载它们而不重新启动应用程序之前将它们换掉?
我想知道是否有可能有一个 Java 桌面应用程序,在启动时,查看一些 URL,看看它是否需要更新,如果需要,下载必要的 JAR 文件,并将它们添加到正在运行的程序的类路径中。
如果旧 jars 在那里,它们不应该被加载到类加载器中,此时应该是吗?是否可以在加载它们而不重新启动应用程序之前将它们换掉?
这应该是可能的。URLClassLoader是一个开始的地方。
Java Web Start 可能是您最好的选择。所需的 jar 文件应在描述符中标识,以便您管理版本控制。
如果您有一个需要在运行时动态发现和下载类的动态应用程序,那么您可以查看使用 RMI 进行动态代码下载。
Java Web Start 是一个不错的选择,但有一些怪癖。尤其:
但是当它工作时,它工作得很好。据我所知,让给定 Java 应用程序轻松更新集中版本是最简单的方法。
--
编辑:最新的 Java 6 中似乎存在“启动程序并透明地下载更新(如果可用)”功能。我还没有尝试过,但很快就会尝试。