Получить актуальную информацию о JNLP - PullRequest
5 голосов
/ 10 февраля 2011

Я запускаю приложение из файла jnlp, который содержит полезную информацию, такую ​​как поставщик, описание и другое поле.

Какой самый разумный способ получить эти данные во время выполнения для построения диалога «О программе»?

Есть ли способ обнаружить, что приложение было запущено без Java Web Start?

Спасибо за вашу помощь.

Pierre

Ответы [ 2 ]

5 голосов
/ 11 февраля 2011

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


1) Информация может быть помещена в манифест архива.Его можно получить с помощью методов класса java.lang.Package .

String title = pckg.getImplementationTitle();
String vendor = pckg.getImplementationVendor();
String version = pckg.getImplementationVersion();

Класс Package также имеет возможность идентифицировать все загруженные пакеты.

Package[] package = Package.getPackages();

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

Лучший способ поместить информацию в манифесты - использовать Ant или аналогичную сборку.инструмент.Таким образом, версия может быть установлена ​​на дату - легко сделать.


2) Добавить свойство в раздел ресурсов JNLP.

<resources>
    .. 
    <property name="jnlp.href" value="${href}" />
    ..
</resources>

BTW - это использование${href} предназначается для обозначения той же самой строки, которая используется в качестве атрибута JNLP href.

Используйте метод BasicService.getCodeBase () для получения кодовой базы.Сформируйте URL-адрес файла JNLP, используя ..

URL urlToJnlp = new URL(
    basicService.getCodeBase(),
    System.getProperty("jnlp.href") );

Загрузите файл JNLP и проанализируйте его с помощью одного из множества API-интерфейсов XML J2SE.(И если он не загружается в API-интерфейсы XML J2SE, это строго указывает на то, что он недействителен или искажен - и его следует проверять с помощью такого инструмента, как JaNeLA .)

Послезагружается и анализируется, основная информация может быть получена и представлена.

3 голосов
/ 10 февраля 2011

Вы можете определить, было ли приложение запущено с помощью веб-запуска, проверив доступность сервисов jnlp.Что-то вроде:

public boolean launchedByJNLP(){
    try {
        ServiceManager.lookup("javax.jnlp.BasicService");
    } catch (UnavailableServiceException e) {
        return false;
    }

    return true;
}

Что касается получения информации jnlp для диалога About, я думаю, что ваше лучшее решение - включить любую информацию, которую вы хотите в диалоге about, в отдельный файл свойств, поставляемый в комплекте с вашим приложением.

...