Загружайте удаленные файлы JAR и следите за ходом загрузки - PullRequest
1 голос
/ 16 июня 2009

Я новичок в Java (я родом из ActionScript), и я хотел бы знать, есть ли способ загрузить и отслеживать процесс загрузки удаленных jar-файлов внутри апплета, а затем использовать классы и другие ресурсы которые находятся внутри скачанной банки. Я знаю, что есть класс JarURLConnection, но я не смог найти способ отслеживать процесс загрузки через этот класс.

Причина, по которой мне нужно это сделать, заключается в том, что я пытаюсь разделить апплет JavaFX на модули, загружаемые по требованию.

Ответы [ 2 ]

0 голосов
/ 17 июня 2009

Поведение по умолчанию при загрузке всех файлов Jar обычно приемлемо, оно загружает и показывает индикатор выполнения, но, похоже, у вас есть требование разделить вещи. AFAIK, ручная загрузка классов и добавление в classpath (или пользовательские загрузчики классов) не могут быть выполнены без подписи вашего апплета, который, по-моему, вам не нужен.

Возможно, вы захотите взглянуть на отложенную загрузку , доступную после обновления 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();
        }
    }
0 голосов
/ 16 июня 2009

Вы можете определить пользовательский ClassLoader и использовать его для своих удаленных модулей. Это позволит вам точно контролировать, как байты класса передаются в ваш апплет. Если вы хотите загружать целые файлы JAR за один раз, вы можете настроить загрузчик классов для загрузки файлов JAR при необходимости и распаковать их с JarInputStream.

...