Как получить доступ к ресурсу внутри jar внутри каталога webstart webapp, используя JnlpDownloadServlet - PullRequest
4 голосов
/ 17 февраля 2011

Я развернул Swing GUI через webstart-maven-plugin и JnlpDownloadServlet в моем веб-приложении в контейнере сервлетов (Glassfish 3.0). Мои классы и ресурсы GUI находятся в файле mygui-4.8.jar, который находится в каталоге webstart моего веб-приложения вместе с файлом launch.jnlp.

Приложение может нормально запускаться при доступе по URL-адресу launch.jnlp в веб-браузере:

http://localhost:8080/myserver/webstart/launch.jnlp

Однако, когда код в моем веб-приложении пытается получить доступ к ресурсу изображения, который находится внутри файла mygui-4.8.jar, он не может получить его.

Код, который я использую в графическом интерфейсе для получения иконки:

URL iconURL = getClass (). GetClassLoader (). GetResource ("/ icons / Find.png");

Используя отладчик, я вижу, что iconURL.toString () возвращает следующий URL:

баночка: http://localhost:8080/myserver/webstart/mygui.jar!/icons/Find.png

Я заметил, что в имени файла jar отсутствует версия (это mygui.jar вместо mygui-4.8.jar).

Похоже, это как-то связано с обработкой версий в протоколе jnlp.

Может кто-нибудь сказать мне, что, как я должен переписать мой клиентский код, чтобы получить на эти ресурсы внутри файла JAR? Спасибо за вашу помощь.

1 Ответ

2 голосов
/ 20 февраля 2011

Проблема решена!

Проблема оказалась ошибкой в ​​другом месте моего кода и не имела никакого отношения к webstart, jnlp или JnlpDownloadServlet.Был недостаток в том, как ресурсы изображений были случайно предварительно обработаны в процессе сборки и в результате были повреждены.

Правильный способ ссылки на ресурсы был таким, каким он был у меня изначально, следующим образом:1006 *

Приведенный выше код прекрасно работает, когда ресурс находится внутри jar в каталоге webstart webapp.Он также отлично работает, если он найден в качестве локального файла на пути к классам.Он работает, работает ли приложение в javaws или как отдельное приложение вне javaws.

...