基于NetBeans平台构建的Web Start应用程序不会创建桌面快捷方式和开始菜单项

rud*_*lfv 6 java netbeans java-web-start netbeans-platform

我创建了一个使用Java Web Start启动的NetBeans平台应用程序.我使用Netbeans 6.8中的"Build JNLP Application"命令构建了WAR文件.

我已经将一个桌面快捷方式和菜单项添加到JNLP文件中,但由于某些原因,在启动应用程序时不会创建这些快捷方式和菜单项.

但是,当我去:

控制面板 - > Java - > Internet临时文件 - >查看 - >选择我的应用程序>单击"安装所选应用程序的快捷方式"

桌面和菜单快捷方式是正确创建的.

此外,在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>
      ...
Run Code Online (Sandbox Code Playgroud)

我很难过.有人对此有解释吗?谢谢

PS这适用于Windows XP和Windows 7. NetBeans版本:6.8

rud*_*lfv 3

我设法使用 javax.jnlp.IntegrationService(自 JDK 6.1.18 起可用)解决了这个问题。

该类可以在 JDK 示例目录中的 jnlp.jar 中找到:/sample/jnlp/servlet/jnlp.jar

以下代码确保创建桌面快捷方式和菜单快捷方式:

    私有无效createShortcuts(){
        IntegrationService vIntegrationService = null;
        尝试 {
            vIntegrationService = (IntegrationService) ServiceManager.lookup("javax.jnlp.IntegrationService");

            if (!vIntegrationService.hasDesktopShortcut() || !vIntegrationService.hasMenuShortcut()) {
                vIntegrationService.requestShortcut(true, true, "应用程序菜单名称");
            }
        } catch(UnavailableServiceException ex){
            例如:printStackTrace();
        }
    }