Firefox und mehrere Java-Versionen

  • Hallo zusammen,

    ich habe bei mir auf Arbeit folgendes Problem:

    Auf den Rechnern sind mehrere JRE-Versionen installiert: 1.4.1, 1.4.2, 1.5.0. Die Version 1.4.2 ist als Standard bei uns definiert. Version 1.6.0_11 soll nun hinzukommen, der Standard jedoch weiterhin bei 1.4.2 belassen werden.

    In der Zusammenarbeit mit dem Internet Explorer ist alles in Ordnung. Wir haben hier Testszenarien, die überprüfen, welche JRE unter welchen Umständen reagiert. Sprich: Was passiert wenn eine Webstart-Anwendung, ein Applet via statischem/dynamischem Aufruf geladen wird.

    Im Firefox verhält sich dies nun anders. Geprüft wurde dies mit dem Firefox 2 und 3.0. Im Plugins-Verzeichnis liegen die vorhandenen Bibliotheken (NPOJI610.dll in der Version 1.4.2.70, NPJava11.dll, NPJava12.dll, NPJava13.dll, NPJava14.dll, NPJava32.dll, NPJPI*.dll).

    Beim Laden eines Applets über den dynamischen Weg wird stets die 1.6.0_11 gestartet. Gewünscht ist jedoch die 1.4.2.

    Der HTML-Code dazu:
    <EMBED type="application/x-java-applet" WIDTH="300" HEIGHT="20" ALIGN="left" code="JavaVersion.class" <NOEMBED>

    Die Frage lautet nun: Anhand welcher Kriterien wird entschieden, welche JRE im Browser geladen wird? Sind das Einstellungen im Firefox? Sind die Einstellungen auf Registry- oder Dateiebene? Hat sich in diesem Zusammenhang etwas seit Java 1.6.x etwas geändert? Das geschilderte Konstrukt funktioniert im Zusammenhang mit der 1.5.0. Sprich: Wenn die 1.5.0 installiert ist, wird im Firefox dennoch die 1.4.2 geladen, wenn ein Applet dynamisch aufgerufen wird.

    Diese Anfrage habe ich auch an das Sun-Team gestellt.

    Ich hoffe, mir kann dazu jemand helfen :)

    Grüße und Dank im Voraus!

  • Rein spekulativ, weil nicht getestet, aber (für mich) plausibel:
    Java Control Panel öffnen
    Reiter "Java"
    in "Java-Applet-Laufzeiteinstellungen" auf "Anzeigen" klicken
    gewünschte Einträge hinzufügen

  • Zitat von seb.berndt

    auf Registry- oder Dateiebene?

    Der Ordner plugins sollte eigentlich leer sein.
    Der Zugriff auf das Plugin erfolgt über HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment -> BrowserJavaVersion.

  • Zitat von .Ulli

    Der Ordner plugins sollte eigentlich leer sein.
    Der Zugriff auf das Plugin erfolgt über HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment -> BrowserJavaVersion.

    Hallo!

    Ich habe eben auf meinem Rechner mit folgender Konfiguration nachgesehen:
    JRE 1.4.1
    JRE 1.4.2 (als Standard gesetzt)
    JRE 1.5.0

    Die Registry sieht an der Stelle folgendermaßen aus (Die code-Formatierung ist zwar nicht optimal hier aber so ist es besser lesbar):

    In dieser Konstellation startet beim dynamischen Aufruf die 1.4.2_07
    Ist die 1.6.0_11 zusätzlich installiert, sieht der Bereich nun so aus:

    Ich habe nun zwei Tests:

    Code
    <APPLET code="JavaVersion.class" width="300" height="20">Sorry, your Browser doesn't support Applets</APPLET>


    und

    Code
    <EMBED type="application/x-java-applet" WIDTH="300" HEIGHT="20" ALIGN="left" code="JavaVersion.class" <NOEMBED>

    Beim ersten Test startet die 1.4.2_07
    Beim zweiten Test startet die 1.6.0_11

    Ich hätte es gern so, dass im zweiten Test ebenfalls die 1.4.2 lädt. Lässt sich das ebenfalls im angegebenen Registry-Bereich machen?

    Vielen Dank für die Mühe!

  • Hallo mal wieder.
    Nach mehreren Tests hat sich nun folgende Frage ergeben:

    Code
    <EMBED type="application/x-java-applet;jpi-version=1.6.0_00" WIDTH="300" HEIGHT="20" ALIGN="left" code="JavaVersion.class"<NOEMBED>

    Anhand welcher Kriterien wird nun auf die JRE 1.6 zugegriffen? Oder anders ausgedrückt: Wie verläuft der Zugriff von FF auf die JRE? Registry-Werte? dll-Dateien?
    Ich frage, weil trotz installierter JRE 1.6.0_11 in diesem Fall keine JRE angezogen wird sondern die Meldung erscheint "Es sind zusätzliche Plugins notwendig, um alle Medien auf dieser Webseite anzuzeigen."

    Man könnte jetzt natürlich argumentieren, dass ich ja auch die 1.6.0_00 aufrufe und nicht die 1.6.0_11. Jedoch funktioniert das Ganze analog mit der Version 1.5.0_08. Insofern denke ich, dass es mit der 1.6.0_11 ebenfall klappen müsste.

    Wäre für jeden Tipp sehr dankbar!

  • Habe die Antwort gerade selbst gefunden. An dieser Stelle kommt ein früherer meiner Posts ins Spiel. Hier ist die npjpi160_00.dll/npjpi160_11.dll wichtig. Befinden sich diese Dateien im Plugins-Verzeichnis von FF, so erkennt der Browser diese und vor allem beachtet er die MIME-Types der Bibliotheken.

    Wo früher (z.B. bei 1.5.0_08) in den MIME-Types ausschließlich die passende Version zugeordnet wird, so ist es bei der 1.6.0_11 anders. Dort stehen ein große Menge von Zuordnungen. Entsprechend bedient die Bibliothek also auch ältere Versionen.