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

下载远程jar文件并监视下载进度

  •  1
  • Sneakyness  · 技术社区  · 16 年前

    我是Java新手(我来自ActionScript背景),我想知道是否有办法下载和监视小程序中远程jar文件的下载进度,然后使用下载的jar中的类和其他资源。我知道有一个JarURLConnection类,但是我找不到通过这个类监视下载进度的方法。

    我之所以需要这样做,是因为我正在尝试将JavaFXApplet划分为模块,可按需下载。

    2 回复  |  直到 16 年前
        1
  •  0
  •   markusk Kiril Kirilov    16 年前

    您可以定义一个自定义 ClassLoader 并将其用于远程模块。这将使您能够准确地控制类字节如何传输到小程序。如果您想一次加载整个JAR文件,您可以让您的自定义类加载器在需要时下载JAR文件,并使用 JarInputStream .

        2
  •  0
  •   Pool    16 年前

    下载所有Jar文件的默认行为通常是可以接受的,它会下载并显示一个进度条,但听起来好像您需要将内容拆分。顺便说一句,手动下载类并添加到类路径(或自定义类加载器)不能在不签署applet的情况下完成,我想这是您不想遵循的路径。

    你可能想看看 lazy downloading ,自Java 1.6更新10起提供。

    在不知道您的确切需求的情况下,关于如何拆分它,我的一般建议是下载初始Jar中的所有类文件,并根据需要下载资源(图像/声音/属性)。

    如何从小程序中下载的代码:

        URL url = new URL(getCodeBase(), filename);
        URLConnection urlConnection = url.openConnection();
        BufferedInputStream bufferedInputStream = null;
        try {
            bufferedInputStream = new BufferedInputStream(urlConnection.getInputStream());
            // ... input data
        } finally {
            if (bufferedInputStream != null) {
                bufferedInputStream.close();
            }
        }