Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
WebstartWebstart einer Applikation mit einer veralteten JNLP-Datei
Hallo,
ich habe ein Problem mit beim Starten einer Applikation mit Webstart:
Der Download-Prozess von Java WebStart brach an einer Stelle ab ("Anwendung
konnte nicht gestartet werden"). In der Detailansicht der Fehlermeldung wurde
dann auf eine fehlende Datei "jts-1.10.jar" verwiesen und eine JNLP-Datei mit
folgendem Inhalt angezeigt:
[XML]
<jar href="./BISClient/lib/jts-1.10.jar"/>
[/XML]
Ursache war also, dass am jeweiligen Rechner offenbar die
JNLP-Datei des Clients noch in einem Cache vorhanden war und nun versucht
wurde, eine Datei "jts-1.10.jar" herunterzuladen, die es in der aktuellen
Version nicht mehr gibt, da wir auf "jtw-1.11.jar" umgestiegen sind.
Auch die unterschiedlichen Möglichkeiten, den Client zu starten (Desktop-Icon oder direkter Aufruf der
JNLP-Datei im Browser), machten keinen Unterschied. Erst nach einem Löschen der
Anwendung (über das Java Control Panel) konnte der Client komplett
heruntergeladen werden
Warum wird die veraltete JNLP-Datei verwendet und nicht beim Starten der Applikation überprüft, ob auf dem Server eine neue vorhanden ist?
Besten Dank für die Unterstützung und viele Grüße,
Martin
P.S.: Leider bin ich in diesem Gebiet ein Neuling, kenne mich also in den Begrifflichkeiten hier nicht so gut aus. Bei Antworten bitte darauf achten
dabei handelt es sich (meiner Meinung nach) um einen Bug.
Das Problem, daß man die JNLP-Datei nicht updaten kann haben viele.
In der Bugdatabase von Oracle findet man einige dieser Fehler, oft mit dem Hinweis, daß diese gefixt wurden, aber das Ganze funktioniert trotzdem nicht. Warum die das nicht richtig hinkriegen? Keine Ahnung - Muß wohl was komplizierteres sein.
(Ich habe mal irgendwo gelesen, daß dieser Fehler nur auftritt, wenn man das Programm auf offline-allowed setzt - habe das aber noch nicht getestet, den ich brauche die offline-Funktion für den Außendienst.)
Wenn es darum geht wenigstens die Jar-Dateien immer auf den aktuellen Stand zu halten, kannst du mal folgendes Probieren:
Du brauchst 2 JNLP-Dateien, eine Start-JNLP und eine Resourcen-JNLP.
In der Resourcen-JNLP sind in den Resoucen-Tags deine Jar-Dateien aufgelistet.
In der Start-JNLP verweist du in den Resoucen-Tags auf die Resourcen-JNLP (extension-Tags).
Die Start-JNLP bleibt nach dem Download unverändert im Cache (immer die alte Version), aber bei der Resourcen-JNLP wird immer geprüft, ob diese sich geändert hat. Somit kann man über die Resourcen-JNLP wenigstens seine Jar-Dateien auch umbenennen oder neue hinzufügen. Das ganze funktioniert ganz automatisch, so als hätte man die Jar-Dateien in die Start-JNLP direkt geschrieben.
So Sachen wie die Pfade, das Desktopicon oder die Infotexte kann man damit aber leider nicht ändern.
Wenn du nähere Infos diesbezüglich brauchst, kann ich dir mal ein Beispiel für die JNLPs posten. Ich beschäftige mich zur Zeit auch etwas intensiver mit diesem Thema, da ich für mein neues Programm auf die WebStart-Technik setzte und somit das gleiche Problem habe, und eine einfache Lösung dafür suche, ohne irgendwie einen eigenen Updatemechanismus schreiben zu müssen.
Die einfachste Lösung für dich wäre allerdings, die Datei "jtw-1.11.jar" einfach auf "jts-1.10.jar" umzubenennen. Wie das Teil heißt, sollte ja eigendlich egal sein. Der Inhalt ist wichtig. (Denk aber daran, daß auch die Pfade mit denen aus der "alten" JNLP übereinstimmen müssen.)
Hi,
eine Frage ist mir hier aber jetzt noch etwas Überlegen eingefallen:
das beschriebene Verfahren mit zwei JNLP-Dateien funktioniert sicher einwandfrei, wenn sich z.B nur die Versionierung von JAR-Dateien ändert.
Wie ist das aber, wenn eine Datei gelöscht wird, bzw. eine neue hinzukommt? Dann muss doch nach meinem Verständnis auch die Start-JNLP-Datei angepasst werden. Und dann stehe ich doch wieder vor dem selben Problem wie ursprünglich, oder?
Wenn es eine neue Resourcen-JNLP auf dem Server gibt, dann lädt Webstart diese herunter und benutzt auch die neue.
Ich habe noch nicht alle Varianten getestet, aber ich bin mir ziemlich sicher, das man die Resourcen praktisch komplett umschreiben kann und WebStart das dann auch mitmacht.
Man muß sich das in etwa so vorstellen, als ob WebStart wiederum ein WebStart-Programm startet.
Man kann halt nur keine Änderungen mehr in der Start-JNLP vornehmen, da diese ja nicht aktualisiert wird. Die Resourcen-JNLP wird wie eine Jar-Datei behandelt. Wenn es eine aktuellere als im Cache gibt, wird diese heruntergeladen und verwendet.
(Ach ja: Das <property name="jnlp.packEnabled" value="true"/> ist notwendig, wenn man pack200 verwendet.)
Spiel ruhig mal damit etwas herum und schreibe hier deine Erfahrungen. Da kann man mit Sicherheit noch ein paar Sachen verbessern.
da gibt es noch eine wichtige Sache zu der Vorgehensweise, die ich oben beschrieben habe.
Das ganze funktioniert leider nur, wenn die Anwendung "online" gestartet wird.
Wenn man die Anwendung "offline" startet (und die Netzwerkverbindung vorher getrennt hat), kommen erst eine Menge Fehlerhinweise (irgendwelche fehlerhaften Urls). Es sind (glaube ich) genau so viele wie Einträge in der Resourcen-JNLP. Wenn man diese alle weggeklickt hat, startet anschließend das Programm (bei mir jedenfalls).
Dieses Verhalten ist leider nicht so doll.
Eine Lösung diesbezüglich habe ich leider nicht. Mir fällt auch momentan kein Ansatz für eine Lösung ein. Vielleicht hat jemand von euch eine Idee?