Web Start Anwendung gebaut auf NetBeans-Plattform nicht Desktop-Verknüpfung erstellen & Menüpunkt starten
-
02-10-2019 - |
Frage
Ich habe eine NetBeans-Plattform-Anwendung erstellt, die Java Web Start gestartet werden. Ich baute die WAR-Datei über das Build JNLP Application'-Befehl in Netbeans mit 6.8.
Ich habe eine Desktop-Verknüpfung und Menüpunkt auf die JNLP-Datei hinzugefügt, aber aus irgendeinem Grunde, so werden diese nicht erstellt, wenn die Anwendung gestartet wird.
Allerdings, wenn ich gehen Sie zu:
Systemsteuerung -> Java -> Temporäre Internet Files -> Ansicht -> Wählen Sie meine Anwendung> Klicken Sie auf ‚Verknüpfungen installieren auf die ausgewählte Anwendung "
Die Desktop und Menüverknüpfungen korrekt erstellt.
Auch in der Java-Konsole wird die Verknüpfung Creation Option auf den folgenden Satz (der Standard, nehme ich an):
- Benutzer auffordern, wenn angedeutet
Im Folgenden finden Sie ein Ausschnitt aus meiner JNLP-Datei:
<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>
...
Ich bin ratlos. Hat jemand eine Erklärung dafür? Dank
PS Dies ist sowohl unter Windows XP und Windows 7. NetBeans-Version: 6.8
Lösung
habe ich es geschafft, dies zu beheben, indem die javax.jnlp.IntegrationService mit (verfügbar seit JDK 6.1.18).
Diese Klasse kann in dem in dem JDK-Beispielverzeichnis gefunden jnlp.jar zu finden: /sample/jnlp/servlet/jnlp.jar
Der folgende Code stellt sicher, dass die Desktop-Verknüpfung und Menüverknüpfung erstellt:
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(); } }
Andere Tipps
Ich habe das gleiche Problem mit Linux, aber es funktioniert wie auf OS-X erwartet. Ich habe sowohl mit dem Tomcat und Jetty Web-Containern getestet.
Also, es ist eine faire Chance, dass Ihr Code tatsächlich korrekt ist.
I have the same problem using Eclipse to build a WebStart application. I figured it was a limitation of WebStart on Windows. I figured you can set those properties, but the user still needs to "install" the app to use them.
It's a bit easier to install on the Mac. You just right click on the icon in your dock, click on Options and then Keep in Dock.