2013-01-07 7 views
6

Ich starte ein Applet über JNLP und Java Web Start. Mein Problem ist, dass beim Laden der Seite zwei JVMs mit zwei Java-Konsolen-Popups und zwei "Möchten Sie diese Anwendung ausführen?" Popups. Ansonsten wird das Applet geladen und sogar meine nativen Bibliotheken werden korrekt geladen. Ich bin mir nicht sicher, was den doppelten Start verursacht.Über Java Web Start gestartete Applets (JNLP) werden zweimal gestartet

EDIT: Auch die erste geladene JVM wird automatisch nach etwa 30-45 Sekunden geschlossen.

html

<script> 
var attributes = { code:"com.osgi.swpc.applet.TrackerApplet.class", width:770, height:825}; 
var parameters = {jnlp_href: "tracker-applet.jnlp"}; 
deployJava.runApplet(attributes, parameters, "1.6"); 
</script> 

jnlp

<?xml version="1.0" encoding="UTF-8"?> 
<jnlp spec="1.0+" href=""> 
    <information> 
     <title>Tracker</title> 
     <vendor>My Vendor</vendor> 
    </information> 
    <resources os="Windows"> 
     <!-- Application Resources --> 
     <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se" /> 
     <jar href="tracker_applet.jar" main="true" /> 
     <nativelib href="applets/jacob.jar"/> 
     <nativelib href="applets/com4j.jar"/> 
    </resources> 
    <applet-desc 
     name="Tracker Applet" 
     main-class="com.osgi.swpc.applet.TrackerApplet" 
     width="770" 
     height="825"> 
    </applet-desc> 
    <update check="background"/> 
</jnlp> 
+0

Ist das fehlende "in den var-Attributen ... ein Tippfehler oder? –

+0

Ja, es war ein Tippfehler. Ich habe die Frage bearbeitet, um das klar zu machen. –

+0

@JustinSkiles: geschieht dies auf allen Browsern? – haylem

Antwort

0

Emm ... interessante Frage

Ich bin nicht ganz sicher, weil es in Ordnung sein würde, mehr Details zu haben .. Aber auf den ersten Blick kann ich Sie bemerken, Haupt Klasse Duplikat:

... in JS

var attributes = { code:"com.osgi.swpc.applet.TrackerApplet.class", width:770, height:825}; 

und dann in JNLP

main-class="com.osgi.swpc.applet.TrackerApplet" 

Also versuchen Sie es nur ein main class attribute zu haben. Vorzugsweise lassen Sie es in JNLP und versuchen Sie es erneut zu starten;


Wenn Sie einige zusätzliche Frage Details haben kommentieren

melden Sie sich bitte, ob das

0

half ich bin nicht wirklich sicher, was die doppelte Abschuss verursacht.

Es hängt von der Implementierung von Java, die Sie verwenden, aber in den letzten Version der Oracle JRE (verwendet Sun JRE sein), eine WebStart Anwendung würde:

  • Cache die JNLP-Datei
  • die JNLP-Datei lesen sie die Liste der Ressourcen zu finden (diese unsere normalerweise Ihre JAR-Dateien) herunterladen müssen
  • konstruieren einen Befehl eine normale Java-Anwendung mit der zuletzt heruntergeladenen JAR-Dateien der Java
  • Start zu starten Anwendung

(Anmerkung Ich bin nicht eine vollständige Beschreibung dessen, was Java WebStart tut zu geben versucht, aber ich versuche nur einen kleinen Einblick in den Prozess zur Verfügung zu stellen.)

Auf diese Weise haben Sie zunächst eine javaws ausführbar, die so lange ausgeführt wird, wie zum Herunterladen der JARs erforderlich ist, gefolgt von einer ausführbaren Datei java, die das eigentliche Programm ausführt.

0

Falls dies mit MSIE passiert, möchten Sie nur einen Vorschlag hinzufügen, um "Smart Screen Filter" zu deaktivieren, insbesondere in Situationen, in denen kein/langsamer Internetzugang verfügbar ist.

Die Position, wo die Option ist hängt von MSIE Version, ich denke in MSIE 7 ist direkt im Menü Extras, während in 9 ist es unter Sicherheitseinstellungen in den Internetoptionen.