在Java中运行时下载JAR文件

时间:2009-11-18 20:02:41

标签: java jar classpath auto-update

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

如果旧的罐子在那里,它们不应该已经加载到类加载器中了,此时应该是吗?是否可以在加载之前将它们交换出来并重新启动应用程序?

5 个答案:

答案 0 :(得分:11)

答案 1 :(得分:3)

应该可以。 URLClassLoader是一个值得一去的地方。

答案 2 :(得分:1)

可能但容易出错。

更简洁的做法是拥有一个“启动器”应用程序,它不依赖任何可更新JAR执行上述操作,然后启动实际应用程序。

您可能需要查看this question以了解有关此主题的更多详细信息。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

Java Web Start是一个不错的选择但有一些怪癖。值得注意的是:

  • 必须在程序启动前下载更新的代码。更现代的方法是下载更新并在下次开始时应用它们。
  • 默认位于沙箱中。如果你需要超出范围,你必须签署你的代码,这是相当麻烦的,直到你自动化部署过程(或使用Netbeans,这有点帮助)。
  • 问题不容易调试 - 只有工具在Java控制台中启用完全跟踪。
  • 缓存客户端中的jar容易出错。更新时,请确保每个部署组件的URL都是唯一的,因此不会使用缓存。

但是 WHEN 它的工作原理非常好。据我所知,让集中式版本可以轻松更新给定Java应用程序的最简单方法。

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