Java-апплет, загружающий изображения из внешних jar-файлов - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть jar на сервере, и пользователи должны иметь возможность разрабатывать расширения для него. Поэтому основной класс jars должен быть расширен, а некоторые ресурсы должны быть добавлены во второй созданный пользователем jar, который будет загружен с другого сервера или локально. Теперь у меня проблемы с доступом к ресурсам (изображениям) из загруженных пользователем фляг. Вот структура:

My Server:
  game.jar containing
    game.class
    images.class
    ...
    image1.png (...)

Local:
  user.jar containing:
    user.class extends game
    userimage.png

Расширение загружается через Greasemonkey, оно изменяет атрибут «archive» на «/home/username/user.jar, game.jar» и атрибут «code» на «user.class». Пользователь должен иметь возможность перезаписывать уже определенные изображения. Если изображение не существует в game.jar, оно корректно загружается из user.jar. Но изображения, загруженные в начале игры, всегда загружаются из game.jar, другие, похоже, корректно перезаписываются пользователем. Есть ли способ убедиться, что они всегда загружены в правильном порядке? Это может быть из-за какого-то механизма кэширования. Поскольку Greasemonkey удаляет игру со страницы, изменяет архив и код и заново вставляет его, игра загружается без мода на короткую секунду. В это время изображения загружаются, как и ожидалось, из игрового фляги, но они не перезаписываются пользователем. Но как этого избежать?

Другое дело: Если я перезаписываю метод run в user.class, игра вообще не может загрузить какое-либо изображение. Не из user.jar и не из game.jar. Java не находит изображение, так как объект URL "getClass (). GetResource (imagename)" возвращается с нулем. Я попытался перезаписать image.class, но это не решило проблему, если только я не перезаписал каждый класс из game.class, участвующий в вызове image.class

1 Ответ

0 голосов
/ 02 апреля 2010

Я не думаю, что наличие обезьянки-обезьянки с тегом <applet> обязательно является лучшим подходом здесь. Возможно, вам действительно нужно, чтобы скрипт greasemonkey связался с вашим апплетом и сказал ему, что от него требуется?

Конечно, это оставляет вопрос о том, как заставить апплет ожидать сценария, но только когда является таким сценарием ...

...