Пути в Jars - это пути, а не фактические каталоги, так как вы можете использовать их в файловой системе.Чтобы получить все ресурсы в пределах определенного пути файла Jar:
- Получите
URL
, указывающее на Jar. - Получите
InputStream
из URL
. - Создайте
ZipInputStream
из InputStream
. - Итерируйте каждый
ZipEntry
, ища совпадения с нужным путем.
... смогу ли я протестировать свой апплет, когда его нет внутри этой банки?Или мне придется запрограммировать два способа получения моих изображений?
ZipInputStream
не будет работать с незанятыми ресурсами в каталогах файловой системы.Но тогда я настоятельно рекомендую использовать инструмент сборки, такой как Ant, для сборки (компилировать / jar / sign и т. Д.) Апплета.Написание сценария сборки и проверка его может занять около часа, но после этого вы можете построить проект несколькими нажатиями клавиш и несколькими секундами.
Это было бы довольно раздражающим, если я всегдаМне нужно достать и подписать мою банку, если я хочу проверить свой аплет
Я не уверен, что вы имеете в виду.Откуда берется «экстракт»?В случае, если мне было непонятно, апплет в песочнице может загружать ресурсы таким образом из любого Jar-файла, упомянутого в атрибуте archive
.Еще одна вещь, которую вы можете сделать, это отделить ресурс Jar от апплета Jar.Ресурсы, как правило, меняются меньше, чем код, поэтому ваша сборка может использовать несколько ярлыков.
Я думаю, что мне действительно нужно рассмотреть возможность размещения моих изображений в отдельном каталоге вне jar.
Если вы имеете в виду на сервере, не будет практического способа получить список файлов изображений без справки с сервера.Например, некоторые серверы небезопасно настроены на создание «списка файлов» на основе HTML для любого каталога без файла по умолчанию (например, index.html).
У меня есть только одна банка, в котором мои классы, изображения и звуки.
ОК - рассмотрите возможность перемещения звуков и изображений в отдельную банку.Или, по крайней мере, положить их в банку без сжатия.Хотя методы сжатия Zip хорошо работают с классами, они менее эффективны при сжатии (в противном случае уже сжатых) форматов мультимедиа.
Я должен подписать его, поскольку я использую класс «Предпочтения» для сохранения пользовательских настроек."
Существуют альтернативы Preferences
для апплетов, например куки. В случае апплета архитектуры с плагином 2 вы можете запустить апплет (все еще встроенный в браузер), используя Java Web Start . JWS предлагает сервис PersistenceService. Вот моя маленькая демонстрация сервиса PersistenceService .
Говоря о JWS, я узнаю: Вы Абсолютно точно эта игра будет лучше в качестве апплета, чем приложения (например, использующего JFrame
), запущенного с использованием JWS?
Апплеты не дадут вам конца стрессу, и JWS предложилаPersistenceService
с момента его появления в Java 1.2.