Приложение Web Start, построенное на платформе NetBeans, не создает ярлык на рабочем столе и элемент меню «Пуск» - PullRequest
6 голосов
/ 30 апреля 2010

Я создал приложение на платформе NetBeans, которое запускается с помощью Java Web Start. Я создал файл WAR с помощью команды «Построить приложение JNLP» в Netbeans 6.8.

Я добавил ярлык рабочего стола и пункт меню в файл JNLP, но по какой-то причине они не создаются при запуске приложения.

Однако, когда я иду к:

Панель управления -> Java -> Временная Интернет-файлы -> Просмотр -> Выбрать мой приложение> Нажмите «Установить ярлыки» в выбранное приложение '

ярлыки на рабочем столе и в меню созданы правильно.

Кроме того, в консоли Java для параметра «Создание ярлыка» задано следующее значение (по умолчанию, я полагаю):

  • Запрашивать у пользователя подсказку

Ниже приведен фрагмент моего файла JNLP:

<jnlp spec="6.0+" codebase="$$codebase">   
      <information>
         <title>${app.title}</title>
         <vendor>SomeVendor (Pty) Ltd</vendor>
         <description>Some description</description>
         <icon href="${app.icon}"/>      
         <shortcut online="true">
            <desktop/>
            <menu submenu="MyApp"/>
         </shortcut>   
      </information>
      ...

Я в тупике. У кого-нибудь есть объяснение этому? Спасибо

PS Это как для Windows XP, так и для Windows 7. Версия NetBeans: 6,8

Ответы [ 3 ]

3 голосов
/ 07 мая 2010

Мне удалось решить эту проблему с помощью javax.jnlp.IntegrationService (доступно с JDK 6.1.18).

Этот класс можно найти в jnlp.jar, который находится в каталоге примеров JDK: /sample/jnlp/servlet/jnlp.jar

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

    private void createShortcuts() {
        IntegrationService vIntegrationService = null;
        try {
            vIntegrationService = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService");

            if (!vIntegrationService.hasDesktopShortcut() || !vIntegrationService.hasMenuShortcut()) {
                vIntegrationService.requestShortcut(true, true, "App Menu Name");
            }
        } catch(UnavailableServiceException ex){
            ex.printStackTrace();
        }
    }
1 голос
/ 30 апреля 2010

У меня та же проблема с Linux, но она работает, как и ожидалось, в OS-X. Я тестировал как веб-контейнер Tomcat, так и Jetty.

Итак, вполне вероятно, что ваш код на самом деле правильный.

1 голос
/ 30 апреля 2010

У меня та же проблема с использованием Eclipse для создания приложения WebStart.Я подумал, что это ограничение WebStart для Windows.Я полагал, что вы можете установить эти свойства, но пользователю все еще нужно «установить» приложение, чтобы использовать их.

Его немного проще установить на Mac.Просто щелкните правой кнопкой мыши значок в доке, выберите «Параметры», а затем «Сохранить в доке».

...