我是Java新手(我来自ActionScript背景),我想知道是否有办法下载和监控applet中远程jar文件的下载进度,然后使用这些类和其他资源在下载的jar中。我知道有一个JarURLConnection类,但我找不到通过这个类监视下载进度的方法。
我之所以需要这样做是因为我正在尝试将JavaFX applet分成多个模块,可以按需下载。
答案 0 :(得分:0)
您可以定义自定义ClassLoader
并将其用于远程模块。这将让您准确控制类字节如何传输到您的applet。如果要一次加载整个JAR文件,可以在需要时使自定义类加载器下载JAR文件,并使用JarInputStream
解压缩它们。
答案 1 :(得分:0)
下载所有Jar文件的默认行为通常是可以接受的,它会下载并显示进度条,但听起来你需要拆分。 AFAIK,手动下载类并添加到类路径(或自定义类加载器)无法在不签署applet的情况下完成,这是我想你不想遵循的路径。
您可能需要查看自{1.6}更新10以来可用的lazy downloading。
在不知道您的确切要求的情况下,我对如何拆分它的一般建议是下载初始Jar中的所有类文件并根据需要下载资源(图像/声音/属性)。
如何从applet中下载代码:
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();
}
}