попробуйте это
откройте файл build.gradle
android {
dexOptions {
javaMaxHeapSize = "4g"
}
}
Я думаю, что классы ленивы загруженный в апплетах. быть загруженным по требованию.
Так или иначе, если классы за пределами банки, можно просто использовать апплет classloader и загрузить их по имени. Исключая:
ClassLoader loader = this.getClass().getClassLoader();
Class clazz = loader.loadClass("acme.AppletAddon");
Если Вы хотите загрузить классы из банки, я думаю, что необходимо будет создать новый экземпляр URLClassLoader с URL банки (банок).
URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")};
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader());
Class clazz = loader.loadClass("acme.AppletAddon");
По умолчанию апплетам запрещают создать новый classloaders. Но если Вы подписываете свой апплет и включаете разрешение создать новый classloaders, можно сделать это.
Да, можно открыть соединения URL с хостом, от которого Вы выполнили свой апплет. Можно или создать classloader с URL HTTP, или загрузить классы (как банки) к машине пользователя и создать classloader с теми банками в пути к классу. Апплет не остановится, и Вы не должны загружать другую страницу.
Относительно второй части Вашего вопроса об уверенности, когда-то пользователь предоставил доступ к Вашему апплету, это может загрузить что-либо, да что-либо, это хочет к локальной машине. Можно, вероятно, сообщить пользователю относительно того, что это делает, если дизайн UI разрешает это.
Надеюсь, это поможет.
Кажется, что это должно быть возможно (но я никогда не делал этого). Вы уже взглянули на Вызов удаленного метода (RMI)?