2011-02-10 3 views
5

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

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

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

Благодарим за помощь.

Pierre

+1

По какой-либо причине вы не можете испечь это в приложении вместе с JNLP-файлом и взять его оттуда? –

ответ

5

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


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

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

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

Package[] package = Package.getPackages(); 

Итерации, которые ищут ваши пакеты, и вы можете получить список всех загруженных пакетов.

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


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

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

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

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

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

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

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

2

Вы можете обнаружить, если заявка была запущена с использованием Webstart путем проверки на наличие в JNLP услуг. Что-то вроде:

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

    return true; 
} 

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