Приложение Web Start, созданное на платформе NetBeans, не создает ярлык на рабочем столе и пункт меню «Пуск».

StackOverflow https://stackoverflow.com/questions/2744923

Вопрос

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

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

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

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

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

Кроме того, в консоли 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

Это было полезно?

Решение

Мне удалось решить эту проблему с помощью 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();
        }
    }

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top