代码之家  ›  专栏  ›  技术社区  ›  broschb

在运行时用Java下载JAR文件

  •  8
  • broschb  · 技术社区  · 15 年前

    我想知道是否有可能有一个Java桌面应用程序,在启动时,查看某个URL,看看它是否需要更新,如果需要,请下载必要的JAR文件,并将它们添加到运行程序的类路径中。

    如果旧jar在那里,它们不应该被加载到类加载器中,现在应该是吗?是否可以在加载之前交换它们而不重新启动应用程序?

    5 回复  |  直到 15 年前
        1
  •  11
  •   Jonathan Feinberg    15 年前
        2
  •  3
  •   TofuBeer    15 年前

    这应该是可能的。这个 URLClassLoader 是一个开始。

        3
  •  1
  •   Community Mofi    7 年前

    这是可能的,但容易出错。

    一种更简洁的方法是使用一个不依赖于 任何 其中的可更新jar执行上述操作,然后启动实际的应用程序。

    你可能想退房 this question 有关此主题的详细信息。

        4
  •  1
  •   crowne    15 年前

    javawebstart可能是最好的选择。所需的jar文件应该在描述符中标识,以便管理版本控制。

    如果您有一个需要在运行时动态发现和下载类的动态应用程序,那么您可以查看 Dynamic code downloading using RMI .

        5
  •  1
  •   Thorbjørn Ravn Andersen    15 年前

    javawebstart是一个不错的选择,但也有一些问题。尤其是:

    • 更新后的代码必须在程序启动前下载。更现代的方法是下载更新并在下一步开始应用它们。
    • 默认值在沙盒内。如果您需要跳出这一步,您必须对代码进行签名,这在您自动化部署过程(或使用Netbeans,这很有帮助)之前是相当麻烦的。
    • 问题不容易调试-只有工具在Java控制台中启用完整跟踪。
    • 在客户机中缓存jar容易出错。更新时,请确保每个部署组件的URL是唯一的,这样就不会使用缓存。

    但是 很管用,效果很好。据我所知,对于给定的Java应用程序,这是一个易于更新的集中式版本的最简单方法。

    --
    编辑:最新的Java6中似乎有“启动程序并透明地下载更新(如果可用)”功能。我还没有试过,但很快就要试了。